gpt4 book ai didi

iOS CATiledLayer 崩溃

转载 作者:可可西里 更新时间:2023-11-01 17:11:13 25 4
gpt4 key购买 nike

我有一个适用于 iPad 的 pdf 阅读器应用程序,我在其中使用 ScrollView 来显示每个页面。我将页面保持在 View 中,并在页面的任一侧保持页面在 View 中。我有单独的纵向和横向 View 。纵向 View 显示一个页面,横向 View 显示 2 个页面。

当 iPad 改变方向时,我卸载旧方向的 View 并加载新方向的 View 。所以说它是纵向 View 然后更改为横向应用程序卸载纵向 View 并加载横向 View 。这一切都很好,除非 pdf 很大。

pdf 是使用 tiledlayers 绘制的。当使用大 pdf 更改方向时,应用程序会崩溃。如果在所有图 block 绘制完成之前更改方向,应用程序只会崩溃。我的猜测是它正在崩溃,因为它试图将图 block 绘制到 View 而不是已卸载的 View 。那么有没有办法在我卸载 View 时停止绘制图 block ?

最佳答案

您需要将 CALayer 的委托(delegate)设置为 nil,然后将其从父 View 中移除。这将停止渲染,之后您可以安全地解除分配。

- (void)stopTiledRenderingAndRemoveFromSuperlayer; {
((CATiledLayer *)[self layer]).delegate = nil;
[self removeFromSuperview];
[self.layer removeFromSuperlayer];
}

此外,请确保从主线程调用它,否则可怕的错误将等待着您。

关于iOS CATiledLayer 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6012796/

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