CATiledLayer多次请求相同的图块
请参阅这个简单的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。
如果您运行链接代码,您将看到多次请求具有相同rect的切片。它在您第一次运行代码和滚动时都会发生。
切换到分支“一列” - 它只发生在init上,永远不会向下滚动。
切换到分支“default-tile-size” - 它只发生在init上,但非常少(你必须在它发生之前多次运行)
我正在尝试在ѭ1中编写一些代码来找到正确的数据并绘制它。它可能很昂贵,而且我不想多做一次。
知道发生了什么事吗?我能做些什么不同的事情?
没有找到相关结果
已邀请:
5 个回复
舜辉
撕吠
在两个线程上同时被调用。通过记录,我可以看到我的代码的各行在执行下一行之前执行了两次,这也执行了两次!日志记录显示这是因为一个线程正在执行一行,然后另一个线程正在执行同一行 - 然后它们都继续执行下一行。 这是令人讨厌的。解决方案是将
的整个内部包裹在串行队列的
中。
渴翅吮斡撤
献导外拘
?当我将一切标准化时,瓷砖只会渲染一次(在设备上进行测试)。但是当我将levelofdetailbias设置为2时,tile会多次加载。我认为这是因为CATiledLayer在设备空闲时才开始缓存额外的细节级别。
伞腹