【发布时间】:2011-03-27 09:58:18
【问题描述】:
代码如下:
https://www.dropbox.com/s/o42wy36x4qhrbpt/PDFScroller.zip
我采用了 WWDC 2010 PhotoScroller 示例代码,它实现了嵌套的 UIScrollViews 进行缩放,在 UIScrollView 中进行分页,并换出了我认为显示多页 PDF 所需的最少代码量而不是图片。
它有效。但在我的 iPhone4 上速度很慢,绘制第一页大约需要三秒钟,在我的 iPod Touch 上更慢。我可以看到它绘制单个瓷砖。同样的 PDF 已经打开得更快了,没有可见的平铺绘图,在我的备用 CATiledLayer 实现中,它只使用单个 CATiledLayer/UIScrollView 和触摸事件来更改页面。我想用这个PhotoScroller 技术,很不错。
我用 Instruments 中的 CPU Sampler 看的,貌似不是 PDF 渲染代码,好像时间都花在了线程和消息传递上。如果有人可以帮助指出此示例正在做什么以产生开销,我将不胜感激。
谢谢,
吉姆
更新1:我最初使用了定义示例代码中的TilingView类技术
+ (Class) layerClass {
return [CATiledLayer class];
}
然后绘制- (void)drawRect:(CGRect)rect,但切换到显式CATiledLayer 子类作为第一次尝试看看它是否会有所作为,但它没有,所以我将代码原样留在这里发布。 TilingView 中还缺少[tiledLayer release]; 泄漏。
【问题讨论】:
-
您找到解决方案了吗?我也在做同样的事情。
-
是的,增加磁贴大小会显着提高性能。
-
知道了,只是在代码中增加了一行:tiledLayer.tileSize = CGSizeMake(512, 512);工作得很好!谢谢。
标签: iphone performance pdf catiledlayer