iOS设置shadow*带来的离屏渲染
前言
在项目中,当我们想要设置View
的阴影效果时,可以通过shadow*
相关方法实现,如:
1 | self.layer.shadowOffset = CGSizeMake(4, -2); |
实现效果如下:
如上实现方式,有些情况下,你并不会发现有什么问题,但是一旦将其用在如UITableViewCell
、UICollectionViewCell
等时,你会发现,滑动时会导致大量掉帧的情况,其主要原因为,shadow*
方法的使用将导致Core Animation
进行离屏渲染,为了确定这一点,可以通过Instruments
工具,选择Core Animation
模板,选择开启Color Offscreen-Rendered Yellow
Debug
选项,当我们滑动CollectionView
时,其帧率如下,产生了大量掉帧的情况,且正如我们所料,使用shadow*
方法的视图被标黄,既使用了离屏渲染。
帧率情况如上,可以看到丢帧率很高。