添加第三个 UICollectionView 后 UIScrollView 明显的滚动滞后

Posted

技术标签:

【中文标题】添加第三个 UICollectionView 后 UIScrollView 明显的滚动滞后【英文标题】:UIScrollView noticable scrolling lag after adding third UICollectionView 【发布时间】:2013-04-13 15:59:01 【问题描述】:

我在 UIScrollView 中添加了第三个集合视图,这似乎产生了一些明显的滚动延迟。

视图层次如下(因为我还不能上传图片):

UIView
-->UIScrollView (large content size 230, 1100)
---->UIView for content
------>UIImageView (background image)
------>UIScrollView
------>UIView
------>PageControl
------>UICollectionView
------>UICollectionView
------>UICollectionView
------>Six labels

实际的 UICollectionView 的水平滚动非常好,只是主 UIScrollView 在上下滚动时有轻微的延迟。

在添加第三个 UICollectionView 之前完全没有任何延迟,它为它的单元格使用不同的类。

似乎只有当所有三个集合视图同时出现在屏幕上时才会出现延迟。

唯一实现的委托方法是scrollViewDidScroll,它只是调整其中一个子视图的大小,所以我认为这根本不会影响它。

仅仅是因为它无法同时处理屏幕上的三个 UICollectionView 吗?我原以为它可以轻松应对。我可以做任何明显的优化吗?

【问题讨论】:

【参考方案1】:

在头疼了很久之后,我找到了问题所在。它与集合视图无关,它们只是突出了更深层次的问题。

我在视图中添加了一些阴影效果,我不知道这会对性能造成如此大的影响。更糟糕的是,当它所在的视图控制器被放入导航控制器时。

self.view.layer.shadowOpacity = 0.75f;
self.view.layer.shadowRadius  = 10.0f;
self.view.layer.shadowColor   = [UIColor blackColor].CGColor;

其他在 UIScrollViews 或 UICollectionViews 中遇到性能问题的人请确保不要犯我的错误。去掉这三行代码并没有让滚动变得超级流畅。

【讨论】:

以上是关于添加第三个 UICollectionView 后 UIScrollView 明显的滚动滞后的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView的cell创建直接从第三个数据开始问题

RxSwift - UICollectionView 更新后不更新

UITableviewCell 中的 UICollectionView。添加约束后,UICollectionView 不显示

自动布局 UICollectionView iOS 8

自定义 UIView 添加到视图后 UICollectionView 不滚动

UICollectionView 显示两行,但我只想要一行