向UIScrollview添加/删除UIViews时的延迟来源?

时间:2012-07-17 23:21:45

标签: ios uiview uiscrollview lag addsubview

问题:

subviews添加/删除UIScrollView会导致显着延迟。

详细说明:

我有一个UIScrollView(有分页enabled),其中包含几十个“页面”。此UIScrollview的内容大小是页数* UIScrollView的宽度。

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

当我第一次遇到这个时,我立即想到的是,磁盘访问/构建subview是滞后的来源。我已经转移到NSTimer,我仍然遇到同样的滞后。

我开始怀疑滞后是由addSubview(将subview添加到UIScrollView)和removeFromSuperview(从subviews移除UIScrollView引起的1}})。

Subviews会直接添加到UIScrollView。我添加的UIScrollView内没有“内容视图”。

问题:

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

2 个答案:

答案 0 :(得分:1)

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

这个问题引导我走上正轨:

Setting image property of UIImageView causes major lag

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

答案 1 :(得分:0)

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