在滚动时将部分插入到UICollectionView时的性能问题
基本上我使用默认的UICollectionViewFlowLayout
。 当我使用insertSections
它需要一些时间。 特别是如果用户滚动这会带来一些口吃。 我正在使用自动布局,在我的自定义UICollectionViewCell
上定位标签。 我正在出列单元格和补充视图(标题)。 这里没什么特别的
以下是时间分析器的截图:
你可以在这里看到的是, prepareLayout
的UICollectionViewFlowLayout
消耗了三分之一的可用CPU功率。 有没有可能加速呢? 例如,为layoutAttributesForElementsInRect:
, layoutAttributesForItemAtIndexPath:
, collectionViewContentSize
, prepareLayout
编写自定义方法? 这个方法怎么样?
我做的其他观察:
更多的部分添加更长的performBatchUpdates
插入部分(约420项)。 每次添加相同数量的项目。 我用仪器做了一些testing。 当发生口吃时,CPU使用率超过100%。 真正的内存使用量正在增加,但我结束了约60 MB的testing。 当时大约有48000个细胞被加载到数据集中(大约45个始终在屏幕上)。 一旦这些单元格被加载,滚动工作就能stream利地进行(CPU最多100%,但只有很短的时间,用户不会注意到)。 在另一个testing中,总共分配的字节大约是1.6GB,但是持续的低。 如果插入了新的部分,框架也会下降到0。
我试图离开单元格的自动布局,为单元格使用不透明的背景颜色,使用剪辑来限制单元格,使用shouldRasterize
等等。 单元格不重叠,不应使用小数值(舍入宽度)。 我根本不使用阴影。 我也试图评论事情,看看有什么错,但我认为这一定是必不可less的。 我在模拟器以及不同的设备上进行了testing。
有谁有线索如何提高插入部分时的性能?
图片附件的调用树中有不less未解决的符号。 您可以尝试在仅由MonthView
应用程序组成的调用树函数之一中缩小性能问题。
尝试检查Hide System Libraries
并使用Debug
作为生成configuration,所以你可以观察这些符号,并导航到您的应用程序中的特定代码。
一旦清楚您的集合视图数据源或委托对UICollectionView
框架级别的性能问题没有贡献,那么您可以花费精力find一种最小化收集视图部分更新的方法。
也许你的单元格自动布局configuration是相当复杂的,你可以简化它?
虽然如果不真正查看collections视图单元格的内容,很难理解。
- UITableViewCell与AutoLayout性能不佳
- 为什么PhoneGap看起来比Titanium更快?
- 如何通过重复和自动反向来减慢animation
- 预先填充UICollectionView单元重用队列
- CoreAnimation性能分析 – 带有CAShapeLayer的CAReplicatorLayer
- 何时以及为什么要使用NSUserDefaults的synchronize()方法?
- iOS – 这是更好的select把图像? 核心graphics(PaintCode应用程序)与图像文件(PNG)
- 导入到CoreData时检查重复项
- 使用Adobe Flex Builder构buildiOS应用程序 – 性能问题