【发布时间】:2011-08-26 03:34:27
【问题描述】:
我有一个适用于 iPad 的 pdf 阅读器应用程序,我在其中使用滚动视图来显示每个页面。我将页面保持在视图中,并在页面的任一侧保持一个页面。我对纵向和横向视图有单独的视图。纵向视图显示单页,横向查看器显示 2 页。
当 iPad 改变方向时,我会卸载旧方向的视图并加载新方向的视图。所以说它是纵向视图,然后更改为横向应用程序卸载纵向视图并加载横向视图。这一切都很好,除非 pdf 很大。
pdf 是使用 tiledlayers 绘制的。当使用大 pdf 更改方向时,应用程序正在崩溃。仅当在所有图块绘制完成之前更改方向时,应用程序才会崩溃。我的猜测是它正在崩溃,因为它试图将图块绘制到视图中而不是已卸载。那么有没有办法在我卸载视图时停止绘制瓷砖?
【问题讨论】:
-
我没有找到合适的解决方案,但解决方法可以防止崩溃。最终将 if (self.tiling == YES && [self.view superview] != nil) 放入 - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx 方法。在从超级视图中删除视图之前或在您的情况下,在方向更改之前设置自平铺。您可以通过为所有方向设置一个视图来避免此问题。我的解决方法防止了崩溃,但并没有阻止 CATiledLayer 以某种神秘的方式访问图像或锁定图像。最终结果是无法从文件系统中删除所述图像。祝你好运!
标签: ios catiledlayer