让美工把图片本身直接切成圆角进行显示,这是效率最高的方案。
1、圆角效果优化
APP应用程序开发中,图片圆角化的需求任务经常出现。
如果通过客户端layer图层指令实现:
imageView.layer.cornerRadius = CGFloat(10);
imageView.layer.masksToBounds = YES;
这样处理的渲染机制采用离屏渲染是GPU在全新上下文环境体系下全新开辟出某个渲染缓冲区,这会带来额外的性能损耗趋势。如果某个渲染视图界面中只存在少量的图片圆角化需求并采用离屏渲染实现圆角化效果,在需求任务量及其较少的情形下意味着默认/新缓冲区的合并和默认/新上下文的切换不太频繁,此时内耗较少些对界面视觉性能影响较低(可行),但当图片圆角化的需求任务量比较多的时候,就会频繁进行默认/新缓冲区的合并和默认/新上下文的切换,此时APP的性能产生明显的影响(不可行不推荐)—掉帧卡顿。
CAShapeLayer继承于CALayer,CAShapeLayer组合UIBezierPath贝塞尔曲线配合才有效果。
用CAShapeLayer(CoreAnimation)组合UIBezierPath贝塞尔曲线可以实现不在drawRect事件内绘制合成图(drawRect事件继承于CoreGraphics框架走CPU,性能消耗更大)。CAShapeLayer渲染直接提交到手机GPU中,相较于使用drawRect事件通过CPU渲染而言,GPU效率极高,能大大优化内存使用情况。
(CAShapeLayer+UIBezierPath组合)内存消耗更少渲染速度更快>(CoreGraphics+UIBezierPath组合) > layer
2、阴影效果优化shadow
对于shadow阴影效果,如图层是简单几何图形或圆角图形,可通过设置shadowPat