【发布时间】:2012-12-20 20:24:46
【问题描述】:
我有一个UICollectionView,它只有几个单元格(大约 20 个)。这个集合的性能很好。但是,一旦我尝试绕过此视图正在呈现的UICollectionViewCells 的角落,我的性能就会受到重大影响。在我的单元格的 init 方法中,这是我添加的唯一一行:
[self.layer setCornerRadius:15];
由于这是在 init 方法中,并且我正在正确地重用单元格,我不明白为什么这会导致我出现问题。
我尝试使用以下多种组合来调整销售的光栅化和不透明度,但仍然没有效果:
[self.layer setMasksToBounds:YES];
[self.layer setCornerRadius:15];
[self.layer setRasterizationScale:[[UIScreen mainScreen] scale]];
self.layer.shouldRasterize = YES;
self.layer.opaque = YES;
他们是否有一些设置或技巧来提高具有圆角单元格的UICollectionView 的性能?
【问题讨论】:
-
如果可能的话,使用预渲染图像来获得相同的效果 - 通过这些图层属性完成的角半径和阴影相当昂贵。
-
单元重用也无济于事;为了实现圆角,iOS 必须重新计算在单元格移动时每帧应该裁剪的内容(如果有任何变化)。不过没有阴影那么糟糕。
-
我曾想过尝试这样做,但我试图避免它,因为我的单元格中有可变文本。此外,属性 shouldRasterize=YES 是否在渲染之前创建图层的图像?
标签: ios uicollectionview uicollectionviewcell