问题标签 [catiledlayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2090 浏览

iphone - 使用 CATiledLayer,渲染时 Tiles 之间的细线,使用 ImageMagick 生成的瓷砖

使用 Apple 和 ImageMagick 的 PhotoScroller 示例,我设法构建了我的目录应用程序。

但我有一个渲染错误。平铺图像以它们之间的细线呈现。

我使用 ImageMagick 的简单脚本是这样的:

苹果的代码是一样的。奇怪的是,他们提供的已经平铺的图像就像一个魅力,在相同的运行时间,与我的图像并排:(

我的第一个猜测是图块的大小与代码的计算不匹配,但是更改大小并没有解决,无论是在我的脚本还是在代码中。我的图像通常比苹果提供的图像小,实际上是一半大小。

有人遇到同样的问题吗?

0 投票
1 回答
2537 浏览

iphone - 从头开始的 UIScrollView 和 CATiledLayer

我的情况:我创建了一个带有 UIView 的 UIScrollView,其中调用了一个 Graph 类,该类在上下文中绘制了一个漂亮的图形。现在我发现如果 UIView 的宽度大于 8192 像素,手机就不会呈现 UIView。事实上,根据 Apple 的文档,如果我希望它大于 1024px,我应该实现 CATiledLayer。

但是在阅读和谷歌搜索了很多之后,我仍然发现很难理解 CATiledLayer 的基础知识来完成这项任务——我不知何故迷失在 Quartz 与 Cocoa 以及层和子层与视图和子视图之间。

理想情况下,我希望保持 Graph 类不受影响,只需完全绘制上下文,将其拆分为图块并滚动它们。滚动视图应该只是水平滚动,不需要缩放或垂直滚动​​。那可能吗?如果是这样,我应该如何继续?也许有人可以给我一个大纲,只是一些要点或伪代码,我应该如何重组滚动视图、uiview 和图形类以使用平铺。

非常感谢您的任何回复。

0 投票
1 回答
592 浏览

ios - 无法在 MonoTouch 中设置 CATiledLayer.FadeDuration

我正在尝试从CATiledLayer.

根据此关闭的错误报告,设置CATiledLayer.FadeDuration静态属性不起作用也不应该这样做:https ://bugzilla.novell.com/show_bug.cgi?id=648993

Objective-C 中建议的解决方案是子类化CATiledLayerHow to change iphone CATiledLayer fadeDuration? . 我已经在 MonoTouch 中实现了这一点,但视图中没有绘制任何内容,尽管DrawInContext按预期调用。

重现该问题的完整代码如下。一旦我删除[Export("fadeDuration")]一切正常(但有动画)。

提前感谢您的帮助。

0 投票
2 回答
832 浏览

iphone - 如何使用 CATiledLayer 处理下载的图像

新年快乐,

我正在编写一个应用程序,用户在其中在线搜索高分辨率图像,然后下载这些大图像。我需要在 UIScrollView 中显示这些。

在 Apple 开发网站上,我在 UIScrollViews 上找到了 WWDC 2010 Session 104,它解释了如何使用 CATiledLayer 和手动创建的一组不同缩放级别的图块。

有没有办法从下载的高分辨率图像文件中以编程方式生成图块?

有什么建议吗?

谢谢

0 投票
2 回答
751 浏览

iphone - CATiledLayer 获得不正确的帧和 contextCTM.a 值 (zoomScale)

UIScrollView在 WWDC2010 Session 104 之后,我刚刚在10000 x 8078 px 图像中创建了一个 CATiledLayer 。

我对框架和zoomScale视图首次显示在其顶层感到困扰

  1. 就像在会话 104 中我定义levelsOfDetail为 4
  2. 在我的 drawRect 我打电话CGFloat lScale = CGContextGetCTM(lContext).a;

奇怪的是,在运行时 lScale 被分配了 0.124907158,而不是预期的 0.125。

以及rect传递给drawRect具有浮点值,例如

  • rect.origin.x = 4099.04443
  • rect.origin.y = 6144
  • rect.size.width = 2049.52222
  • rect.size.height = 2048

CATiledLayer对我来说最烦人的是,即使我initWithFrame使用 0x0 原点创建了 tiledImageView ,框架的原点也显示为 0 x 26.93。

有什么想法可以找到对此负责的计算吗?


编辑: 我找到了奇怪框架位置的来源,即 ScrollView 边界被错误地设置为 450 像素。那应该是 420 像素。UIScrollView 中的 layoutSubview 例程有一个中心视图例程,它无意中调整了 y 坐标。

0 投票
1 回答
1047 浏览

iphone - 如何使用 CATiledLayer 确定正确的 UIScrollView zoomScale

我为 10000x8078 图像创建了UIScrollView一个CATiledLayer

我会不会将此图像放在UIView总是zoomScale根据contentSize(分别是图像的大小)更新的图像中。

现在根据使用的瓷砖而有所不同CATiledLayercontentSize

我现在如何确定正确zoomScaleUISrcollView

谢谢

0 投票
1 回答
2364 浏览

iphone - 如何使用快速显示的大图像(如 Photos.app)制作 UIScrollView?

我正在尝试制作一个简单的图像查看器来查看 ALAssetRepresentation 的全分辨率图像。事实证明,事情并没有那么简单。

我的第一种方法是在 UIScrollView 中制作一个大的 UIImageView。虽然这确实有效,但速度非常慢。

使用照片应用程序时,当您触摸图像时,较大的版本会立即打开。起初,正在绘制一个非常低分辨率的图像。但很快,出现了更高分辨率的图像。另外,如果我放大,图像首先是较低的分辨率,然后分辨率会增加。

我查看了 WWDC 2010 主题演讲 #104,其中描述了 Photos.app 的工作原理。但是我应该如何实现呢?在主题演讲中,演示使用了预先平铺的图像,这是我无法从 ALAssetRepresentation 中获得的。我试过只加载全分辨率版本并使用 CATiledLayer 绘制它,虽然缩放等并不慢,但绘制瓷砖时太慢了。

Photos.app 是否在某处缓存所有图像的低分辨率版本或发生了什么?一些关于做什么的指示会很有帮助。

0 投票
1 回答
257 浏览

iphone - 分割一个 CGImage

在 iOS 4.0 及更高版本中,有没有办法在不将整个图像加载到内存的情况下分割 CGImage?我正在尝试做的是*以编程方式*分段图像以用于使用大图像的 CATiledLayer 应用程序,但我不想占用加载完整图像所涉及的内存。

此外,有没有办法以特定分辨率加载该(或任何)片段,因此如果我们从图像中缩小,我们可以以低细节级别加载该图块,从而节省内存。

谢谢!-马特

0 投票
1 回答
1746 浏览

iphone - UIScrollView - CATiledLayer - PDF和Quartz绘图的组合

我想在 iphone/ipad 项目中在完整的可缩放 pdf 上绘制线条、矩形等(因此没有质量损失)。

首先:我以这个样本为基础:http ://www.olivetoast.com/blog/2009/08/simple-uiscrollview-catiledlayer-pdf-example/ 这个样本可以以全质量放大PDF

第二:我也基于这个样本:http ://www.iphonedevbook.com/forum/viewforum.php?f=1&sid=6d52a0d08a8c6a807cdedfde6a041088 这本书的样本名为 QuartzFun。它用于绘制一条线,矩形,...

这两个示例完全分开工作,但是当我想将它们结合起来时,我无法画线……为了使变薄更简单,我已经在此处结合了代码:http ://www.megafileupload.com/en/文件/297790/SimpleTiledScrollExample-1-zip.html

有人可以告诉我要改变什么才能让它工作吗?

提前致谢

0 投票
4 回答
1343 浏览

ios - 使用 CATiledLayer 的 drawLayer:inContext:

我正在尝试使用CATiledLayer+来实现我自己的地图引擎UIScrollView

drawLayer:inContext:我的实现方法中,如果我有当前边界框所需的某个图块图像,我会立即在上下文中绘制它。

但是,当我在本地缓存数据结构中没有可用的数据时,瓷砖图像是从瓷砖服务器异步请求/下载的,并且不会在上下文中绘制任何内容。

问题是,当我不在上下文中绘制任何东西时,视图的那一部分显示为空白图块。并且预期的行为是从以前的缩放级别显示放大的缩放平铺视图。

如果你们遇到任何类似的问题并找到任何解决方案,请告诉我。