- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个适用于 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/
我试图了解 CATiledLayer在使用 CGContextDrawPDFPage() 渲染 PDF 页面时有效. 我的理解是 drawLayer:inContext:每个图 block 和细节级别
有没有人有任何技巧可以提高 CATiledLayer 在视网膜显示器上的性能? 这篇文章: CATiledLayer in iPad retina simulator yields poor perf
我是 iOS 开发的新手,我正在尝试了解 CATiledLayer 的工作原理。不是如何使用它! CATiledLayer 有两个关键特性,我想知道它是如何工作的。 可见范围自动报告。 CATiled
请看这个简单的 CATiledLayer 示例 https://github.com/seanhess/CATiledLayer-Example 它由一个具有如下层次结构的 viewControlle
如您所知,CATiledLayer 用于通过以适合 View 大小的比例显示平铺图像来显示大图像。 我有 CATiledLayer 的工作方式类似于可以在 iOS 文档中找到的示例,我计算 drawR
我有一个适用于 iPad 的 pdf 阅读器应用程序,我在其中使用 ScrollView 来显示每个页面。我将页面保持在 View 中,并在页面的任一侧保持页面在 View 中。我有单独的纵向和横向
由于种种原因,我正在考虑自己实现CATiledLayer。我做了一些调查,但我似乎无法弄清楚 CATiledLayer 如何知道要提供哪个图 block 。例如,当您滚动图层时,setPosition
我有这个巨人UIView与约 600 UIButtons作为 subview 。 UIView大约是 2000 x 2000 像素,它是 UIScrollView 的 subview .我正在尝试实现
我正在按照 this answer 中概述的说明进行操作用 Core Graphics 中的图案填充图层。当图层是 CALayer 子类时,绘图工作正常。但是,当图层是 CATiledLayer 子类
我需要在 UIImageView 中加载更高分辨率的图像。经过各种方法之后,如果我们加载更高分辨率的图像,内存使用量就会变得巨大 [ width * height * 4 ]因此,为了克服这个问题,需
我正在尝试屏幕捕获使用 CATiledLayers(用于动画)的 View ,但无法获取我想要的图像。 我在 Apple 的“PhotoScroller”示例应用程序上进行了尝试,并添加了以下内容:
我有一个 CATiledLayer,我通过以下方法在其中渲染内容 - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx 我使用
全部, 我无法从 CATiledLayer 获取我想要的行为。有没有一种方法可以触发图 block 重绘,而不会产生先将其区域清除为白色的副作用?我已经将 CATiledLayer 子类化以将 fad
关闭。这个问题需要debugging details .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 4年前关闭。 Improve this question 好吧
我将如何捕获 CATiledLayer 上的触摸事件? 我遇到以下情况,如果我将 View 层更改为 CATiledLayer, View 将停止捕获 TouchesXXX 事件。为什么会发生这种情况
我正在尝试在一个图层上添加两个子图层。一个图层应充当(快速渲染)背景,而另一图层(CATiledLayer)应显示其他内容。但是,CATiledLayer 不会出现在前面。普通的CALayer总是隐藏
每次您处于更深的缩放级别时,是否有一种方法可以重置您的缩放级别,以便您可以无限缩放? 我正在尝试创建一个 CATiledLayer,其中每个图 block 都有不同的颜色,当您放大一个图 block
我正在我的应用程序中创建一种“ map ”。这基本上只是使用 imageView/scrollView 查看图像。然而,图像是巨大的。像 20,000x15,000 像素之类的。如何平铺此图像以使其适
我的一个老问题与在 monotouch 中查看 pdf 文件有关(我设法完成了这个)。 Port of the iOS pdf viewer for xamarin 我的问题如下:如果我开始关闭和打开
其他人也遇到过这个问题,但我没有看到任何解决方案 - 请参阅 ( http://openradar.appspot.com/6941930)。 我有一个 UIScrollView,它的内容 View
我是一名优秀的程序员,十分优秀!