0

问题:

添加/删除subviews到/从UIScrollView导致明显的滞后。

细节:

我有一个UIScrollView(带有 paging enabled)将包含几十个“页面”。这个的内容大小UIScrollview是页数 * 的宽度UIScrollView

这些页面中的每一个subview都是我从某些文件系统访问中构建的。我UIScrollView保留了三个页面subviews:当前页面及其左/右邻居。当当前页面在屏幕外的一半时发生邻居的加载/驱逐subviews,这是磁盘访问和视图层次结构的操作发生的时候。

当我第一次遇到这个问题时,我的直接想法是磁盘访问/构建subview是滞后的根源。从那以后,我搬到了这个NSTimer,并且仍然遇到同样的滞后。

我开始怀疑滞后是由addSubview(添加subviewUIScrollView)和removeFromSuperview(从 中删除subviews)引起的UIScrollView

Subviews直接添加到UIScrollView. 我没有UIScrollView将它们添加到其中的“内容视图”。

问题:

这是一个常见问题/瓶颈吗?加载这些页面有更好的模式吗?

4

2 回答 2

1

问题最终是设置子视图的图像属性。UIImage 不会立即执行其处理,只是为出现在屏幕上做准备——这就是导致延迟的原因。

这个问题使我走上了正确的道路:

设置 UIImageView 的图像属性会导致严重滞后

他们的解决方案是使用 Core Graphics 自己解压缩/处理图像,效果很好。

于 2012-07-18T20:01:52.347 回答
0

NSTimer通常在主线程上运行。如果您在主线程上进行同步磁盘访问,那么这将导致卡顿。你是如何阅读你的文件的?

于 2012-07-18T01:57:10.943 回答