gpt4 book ai didi

iphone - CATiledLayer 在绘制内容之前消隐图 block

转载 作者:行者123 更新时间:2023-12-03 18:27:30 24 4
gpt4 key购买 nike

全部,

我无法从 CATiledLayer 获取我想要的行为。有没有一种方法可以触发图 block 重绘,而不会产生先将其区域清除为白色的副作用?我已经将 CATiledLayer 子类化以将 fadeDuration 设置为返回 0。

更具体地说,以下是我所看到的以及我想要实现的目标的详细信息:

  • 我有一个内容尺寸很大的 UIScrollView...~12000x800。它的内容 View 是一个由 CATiledLayer 支持的 UIView。
  • UIView 使用大量自定义绘制的线条进行渲染
  • 一切正常,但 UIView 的内容有时会发生变化。当这种情况发生时,我想尽可能无缝地重新绘制图 block 。当我在 View 上使用 setNeedsDisplay 时,图 block 会重新绘制,但它们首先会被清除为白色,并且在绘制新内容之前会有几分之一秒的延迟。我已经对 CATiledLayer 进行了子类化,以便将 fadeDuration 设置为 0。
  • 我想要的行为似乎应该是可能的......当您放大 ScrollView 并且内容以更高分辨率重新绘制时,重绘之前不会出现空白;新内容绘制在旧内容的正上方。这就是我正在寻找的。

谢谢;我很欣赏你的想法。

更新:

只是为了跟进 - 我意识到在重画之前瓷砖并没有被清除为白色,它们被完全取出;我看到的白色是我的 CATiledLayer 支持 View 下方 View 的颜色。

作为快速破解/修复,我将 UIImageView 放在 UIScrollView 下方,在触发 CATiledLayer 支持的 View 的重绘之前,我将其可见部分渲染到 UIImageView 中并让它显示。这可以显着平滑重绘。

如果有人有更好的解决方案,例如在重绘之前防止以重绘为目标的图 block 消失,我仍然很想听听。

最佳答案

我发现,如果您将levelsOfDetailBias和levelsOfDetail设置为相同的值(在我的例子中为2),那么它只会重绘被我的setNeedsDisplayInRect:调用触摸的图 block ,正如您所希望的那样。

但是,如果levelsOfDetail与LODB不同,则对setNeedsDisplayInRect的任何调用:重绘所有图 block 。

关于iphone - CATiledLayer 在绘制内容之前消隐图 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1710628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com