前言
在本篇文章中,如何判断离屏渲染是依据 Debug 中的 Color Off-screen Rendered
。关于什么是离屏渲染可以参见这篇文章。
离屏渲染的例子
一、 设置 UIImageView 的圆角 触发离屏渲染的条件:
- 给
cornerRadius
属性赋值。 masksToBounds
为 YES。- 调用
setImage
为 imageView 设置图片。
以上条件,缺一不可。
代码示例:
self.imageView.layer.cornerRadius = 20;
self.imageView.layer.masksToBounds = YES;
[self.imageView setImage:[UIImage imageNamed:@"123"]];
需要注意的是,仅是修改 cornerRadius 与 masksToBounds 并不会造成离屏渲染。
二、为视图绘制阴影
代码示例:
self.grayView.layer.cornerRadius = 10;
self.grayView.layer.shadowRadius = 10;
self.grayView.layer.shadowOpacity = 0.2;
当我们使用上述代码给视图绘制阴影时,会造成离屏渲染。
解决办法:为阴影绘制 path,防止系统去开辟新的缓存区来绘制 path。
self.grayView.layer.shadowPath = [[UIBezierPath bezierPathWithRect:self.grayView.bounds] CGPath];
这样,就不会造成离屏渲染了。