gpt4 book ai didi

iphone - CATiledLayer 如何知道何时提供新磁贴?

转载 作者:可可西里 更新时间:2023-11-01 06:12:30 27 4
gpt4 key购买 nike

由于种种原因,我正在考虑自己实现CATiledLayer。我做了一些调查,但我似乎无法弄清楚 CATiledLayer 如何知道要提供哪个图 block 。例如,当您滚动图层时,setPosition: 或 setBounds: 永远不会被调用。看起来后台线程只是突然调用委托(delegate)的 drawLayer:inContext: 而没有任何触发器。我发现 CATiledLayer 使用“CAImageProvider”的实例调用 setContent:,并且对 drawLayer:inContext: 的所有调用都源自该类。因此,这可能是决定要绘制哪个图 block 的关键。但是我找不到关于该类的任何文档。

那么...有人知道它是如何工作的吗?我怎样才能覆盖它?

关于CATiledLayer的缺点:

  • 它始终使用屏幕分辨率(或 x2、x4 等);您不能将其设置为源图像的原始分辨率
  • 您不能指定除 2 以外的任何其他比例因子
  • 您必须指定 levelsOfDetail 和 levelsOfDetailBias,对此我看不出任何实现理由。如果您拥有可无限扩展的内容,例如分形,那么这是非常有限的。
  • 最重要的是:如果你限制它只在一个方向上缩放(我通过在 setTransform 中将一个方向的比例因子强制为 1 来做到这一点:),它的行为很奇怪

最佳答案

drawLayer:inContext:中,您可以使用CGContextGetClipBoundingBox获取边界框。 CGContextGetCTM 应该为您提供有关当前分辨率的信息。

关于iphone - CATiledLayer 如何知道何时提供新磁贴?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7360429/

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