UICollectionView滚动滞后

naz*_*naz 2 performance scroll collectionview

我在一个单元格中设置了一个包含10个子视图的集合视图.

子视图是带有标签的-imageview -text view -imageview -uilabel -imageview -uilabel

最初,集合视图在iPad上显示15个单元格.当我需要更换底部或顶部的单元格(重复使用单元格)时,滚动暂停时滚动暂停.我删除了阴影,但仍然是同样的问题.

因此,当旧单元被重用时导致滞后时会出现问题.

顺便说一句,没有图像通过网络加载.

naz*_*naz 5

我很久以前就得到了答案,但为了其他人的利益,他们可能会遇到同样的问题.

除了去除阴影,您还需要删除"清晰颜色"背景.任何需要额外处理的附加图纸都应该被移除或替换为替代.任何繁重的工作,文本格式化,日期格式化都应该在显示集合或表视图之前完成.确保您的单元格仅进行演示而不进行处理.如果你无法避免它在另一个线程上进行处理.

要测量滚动速率,您需要使用仪器>图形>核心动画工具来测量帧速率.

尝试一下,你会注意到一个区别.


tar*_*500 5

编辑:无需尝试自动调整蒙版,只需阅读这篇关于 UICollectionView 性能提升的简短文章http://noxytrux.github.io/blog/2014/09/25/ios8-weirdness-part3-laggy-uicollectionview/

这可能是一个自动布局开销。考虑改为尝试自动调整蒙版大小。

您可以提交所有内容并进行实验:

  1. 关闭单元格 xib 文件的自动布局
  2. 运行一个应用程序来测试性能(不用担心布局混乱)
  3. 如果效果明显,则设置自动调整大小蒙版(并在需要时在代码中进行布局)而不是自动布局

我以这种方式修复了我的 UICollectionView 性能问题。当您一次有很多可见单元格时,它最有帮助。

另外,如果您有图像视图,请参阅此答案设置 UIImageView 的图像属性会导致严重滞后

不要忘记 Instruments:运行Time Profiler,看看是什么占用了你的主线程时间。