我正在研究Apple ScrollViewSuite和Photoscroller,我想知道如何在通过NSURLConnection下载切片时实现CATiledLayer: 如何通知 drawRect:已下载特定磁贴,如何跟踪与每个磁贴关联的rects和contex?
关心Fredrik
答案 0 :(得分:2)
完成下载后,缓存结果,然后使用tile的rect调用setNeedsDisplayInRect:。它将再次调用drawLayer:inContext:然后您可以绘制缓存的结果。
答案 1 :(得分:0)
我认为没有办法做到这一点,因为它应该以其他方式工作。 Tiles以分离的线程呈现,因此您可以从drawLayer:InContext:
方法开始下载tile。当然不要忘记为下载的磁贴实现缓存,否则你会杀死你的应用和发票: - )
答案 2 :(得分:0)
无法从平铺图层中获取必要的信息。我目前只是每隔几秒钟对图层进行一次无效/重绘,以获得某种“最终一致性”。也就是说,在某个时间点,我希望所有可见的图块都已加载并缓存(由我自己的控制器)。然后,重绘将使用缓存中的图像简单地渲染所有图块。
要实现这一点,您需要能够计算可见磁贴的集合,并在未缓存时重新下载它们。这种方法有很大的好处,允许我取消不再可见的图块的连接。它允许地图最终从连接/服务器错误等恢复。
如果您想要摆脱这种“轮询”方法,平铺图层将需要导出许多内部结构,例如它已缓存的区块以及它当前感兴趣的区域。