【发布时间】:2012-06-20 15:11:59
【问题描述】:
我有一个带有 CATiledLayer 支持的视图。我想从这个 CATiledLayer UIView 中获取可见图块并将其添加到另一个视图作为其 CALayer 支持,从而在另一个不使用 CATiledLayer 的 UIView 中重新创建可见图像。
我想这样做的原因是我将使用第二个 UIView 来掩盖更新支持 CATiledLayer 的 UIView 的效果 - 这当前会在重新加载所有图块时产生闪烁。
问题是,我不完全确定我会如何做到这一点。有什么想法吗?
【问题讨论】:
-
所以你想采取一个故意平铺视图并制作一个普通视图来隐藏平铺视图......?也许是一个疯狂的问题,但为什么一开始是平铺的?
-
@PauldeLange - 当我的平铺视图重新加载时,它会在重新绘制平铺时“闪烁”。平铺视图下方将有一个 UIView,它将是上面图块的直接副本。然后,当重新加载瓷砖时,底部视图将在重新加载瓷砖时显示一秒钟,从而停止闪烁效果。据我所知,这是图形程序相当普遍的做法 - 使用图形缓冲区来消除渲染上述任何新内容的影响。
-
如果你可以比瓷砖更快地渲染背景视图,为什么你有瓷砖?影响 -> 顺便说一下效果。
-
@Gaz_Edge 我从未见过 CATiledLayer 有任何闪烁。当您在其上调用“setNeedsDisplay”时,它将保留旧图像,而您的“drawLayer:inContext:”将简单地在其上绘制。您可能希望显示更多关于您如何绘制的详细信息,以及您正在设置的 CATiledLayer 上的哪些属性。
-
@Gaz_Edge 是正确的。您必须在 CATiledLayer 的委托的 drawLayer:inContext: 中进行绘图。在我的情况下,它始终是视图控制器。
标签: iphone ios cocoa uiview catiledlayer