大家好,
我在使用CATiledLayer时遇到了一些问题。有没有办法在不将其区域首先清空为白色的情况下触发瓦片重绘? 我已经从CATiledLayer子类中设置fadeDuration返回0。
更具体地说,以下是我所看到的情况和我的目标:
- 我有一个UIScrollView,内容大小很大... 12000x800左右。其内容视图是由CATiledLayer支持的UIView。
- UIView呈现出许多自定义绘制的线条。
- 一切都运作正常,但UIView的内容有时会发生更改。 当发生这种情况时,我想尽可能平滑地重新绘制瓦片。 当我在视图上使用setNeedsDisplay时,瓦片被重新绘制,但它们首先被清除成白色,并且在新内容绘制之前有一小段延迟。 我已经从CATiledLayer子类中设置fadeDuration为0。
- 我想要的行为似乎应该是可能的...当您放大滚动视图并以更高分辨率重新绘制内容时,重新绘制之前没有任何空白;新内容直接绘制在旧内容之上。那就是我想要的。
谢谢,感谢您的建议。
更新:
只是为了跟进 - 我意识到在重绘之前并不是将瓦片清空为白色,而是彻底去除它们;我看到的白色是位于CATiledLayer支持视图下方的视图的颜色。
作为一个快速的修补/解决方法,在UIScrollView下面放置了一个UIImageView,并在触发CATiledLayer支持的视图的重绘之前将其可见部分渲染到UIImageView中并让它显示。 这显着平滑了重新绘制。
如果有更好的解决方案,例如在首次重绘之前防止目标瓦片消失然后被重新绘制,我仍然很想听听您的想法。
drawLayer:inContext:
方法中吗? - Yeung