我有一个集合视图,在其中显示星期几和一个月的某天,并希望使其滚动到几周,几个月或几年后。
下面的代码很重要:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 1000000 //number of days
}
当我尝试上面的代码时,我发现在加载控制器时性能存在巨大差异,并且内存分配增加了180MB(之前为30个单元)。
如何将像元数设置为Infinite,以便可以滚动显示年份, 还是有一种方法可以让我在每周,每月或每年前进时动态地更改单元数。
实现此目标的最佳方法是什么?
答案 0 :(得分:0)
Cell重用适合于内存分配,而cell prefetching不太适合内存分配。
使用collectionView.isPrefetchingEnabled = false
来平衡内存分配和用户体验。
这里是apple's doc,isPrefetchingEnabled
为true时,集合视图在显示单元格之前先请求单元格,从而将渲染分布在多个布局通道中。如果为false,则根据显示所需的单元格进行请求,通常在同一渲染循环中请求多个单元格。将此属性设置为false还将禁用数据预取。此属性的默认值为true。