在单元格上设置角半径会导致UICollectionView的性能下降

leh*_*058 12 ios uicollectionview uicollectionviewcell

我有一个UICollectionView只有几个细胞(约20).这个系列的性能非常好.但是,一旦我尝试围绕UICollectionViewCells这个视图呈现的角落,我的表现就会受到重创.在我的cell的init方法中,这是我添加的唯一一行导致这个:

[self.layer setCornerRadius:15];
Run Code Online (Sandbox Code Playgroud)

由于这是在init方法中,我正在重新使用单元格,我不明白为什么这应该导致我的问题.

我尝试使用以下多种组合来调整销售的光栅化和不透明度,但仍然没有效果:

[self.layer setMasksToBounds:YES];
[self.layer setCornerRadius:15];
[self.layer setRasterizationScale:[[UIScreen mainScreen] scale]];
self.layer.shouldRasterize = YES;
self.layer.opaque = YES;
Run Code Online (Sandbox Code Playgroud)

他们的一些设置或技巧是为了改善UICollectionView具有圆角的单元格的性能吗?

ric*_*ter 10

正如@Till在评论中指出的那样,预呈现的图像应该可以解决您的性能问题.您可以将所有角落舍入,阴影和任何其他特殊效果放入其中,而不需要CA即时渲染它们.

预渲染图像不会将您锁定为静态内容大小,也可以:查看UIImage可调整大小的图像内容.(这仍然比CA渲染每帧快.)

  • 确实.不过,如果你对图像不小心,你仍然可以获得可怕的表现.我们的设计师偶然在整个画布中将Photoshop的不透明度设置为95%,并将其导出到PNG.滚动很糟糕,仪器显示整个图像是透明的.因此,如果您发现自己正在努力进行图像的不稳定滚动,请仔细检查其alpha值. (6认同)