【发布时间】:2011-04-03 17:49:24
【问题描述】:
请看这个简单的 CATiledLayer 示例https://github.com/seanhess/CATiledLayer-Example
它由一个具有如下层次结构的 viewController 组成:
view: (frame = window size)
scrollView: (frame = window size, content size = 200 x 4000)
contentView: (frame = content size = 200 x 4000, tile size = 100 x 100)
内容视图的图层已被覆盖为 CATiledLayer。
如果您运行链接代码,您会看到多次请求具有相同矩形的图块。它在您第一次运行代码和滚动时都会发生。
切换到“单列”分支 - 它只发生在初始化时,从不发生在您向下滚动时。
切换到分支“default-tile-size”——它只发生在 init 上,但很少发生(你必须在它发生之前多次运行它)
我正在尝试在drawLayer:inContext: 中编写一些代码来定位正确的数据并绘制它。它可能很昂贵,我不想多次这样做。
知道发生了什么吗?我能做些什么不同的事情?
【问题讨论】:
-
我怀疑没有人真正了解CATiledLayer,除了用它来绘制巨大的图像。 :(关于去哪里寻求帮助的建议?
-
我也看到了同样的情况。我有一个小型演示应用程序,只有 12 个图块在屏幕上显示而无需滚动,并且绘图代码被调用 22 次。我也会继续研究这个。
-
在 CATiledLayer 的其他问题中,我想知道同样的问题。也许您可以单独跟踪已请求哪些图块,并简单地跳过已请求的矩形的昂贵操作?
-
@TheBlack - 这就是我最终所做的,但我会在下面查看 EricK 的东西。
标签: iphone cocoa-touch ios catiledlayer