【发布时间】:2012-07-17 23:21:45
【问题描述】:
问题:
在UIScrollView 中添加/删除subviews 会导致明显的延迟。
详情:
我有一个UIScrollView(带有分页enabled),其中包含几十个“页面”。这个UIScrollview的内容大小是页数*UIScrollView的宽度。
这些页面中的每一个都是一个subview,我通过一些文件系统访问来构建它。我的UIScrollView 保留了三个页面作为subviews:当前页面及其左/右邻居。加载/驱逐相邻的subviews 发生在当前页面半离屏时,即磁盘访问和视图层次结构操作发生的时候。
当我第一次遇到这个问题时,我的直接想法是磁盘访问/构建subview 是滞后的根源。从那以后,我搬到了NSTimer,并且仍然遇到同样的延迟。
我开始怀疑延迟是由addSubview(将subview 添加到UIScrollView)和removeFromSuperview(从UIScrollView 中删除subviews)引起的。
Subviews 直接添加到UIScrollView。我在 UIScrollView 中没有添加它们的“内容视图”。
问题:
这是一个常见问题/瓶颈吗?有没有更好的加载这些页面的模式?
【问题讨论】:
-
如果您添加的子视图包含大型资源文件(图像),那么您可能会注意到延迟,因为图像根据图像的大小加载到内存中。
-
嗯。我们添加的子视图是 UIScrollView 的子类,它们的内容是 2048x2048 的图像,通常大小约为 2MB。
-
尝试使用小图像文件或不使用图像,看看延迟是否仍然存在......如果没有,那么您可能需要考虑延迟加载图像。
标签: ios uiview uiscrollview lag addsubview