离屏渲染

  1. layer.cornerRadius 不会触发离屏渲染,该属性只是对边框和背景颜色起作用,适用于内部没有其他控件的 view。
  2. CAShapeLayer+UIBezierPath 会触发离屏渲染。
  3. 最好的方式就是使用 Core Graphics 的方式绘制圆角图片。
  4. 当然,还是那句话,根据场景来使用,如果界面中圆角的地方不多,第一种方式是最简单快捷,效率最高的。如果用到的圆角很多,那还是使用 Core Graphics 的方式

场景

  1. cornerRadius+clipsToBounds
  2. shadow
  3. group opacity
  4. mask
  5. UIBlurEffect

  6. AsyncDisplayKit(Texture) 作为主要渲染框架,对于文字和图片的异步渲染操作交由框架来处理。关于这方面可以看我之前的一些介绍

  7. 对于图片的圆角,使用 CoreGraphics 为图片裁剪圆角
  8. 对于视频的圆角,由于实时剪切非常消耗性能,我们会创建四个白色弧形的 layer 盖住四个角,从视觉上制造圆角的效果
  9. 对于 view 的圆形边框,如果没有 backgroundColor,可以放心使用 cornerRadius 来做
  10. 对于所有的阴影,使用 shadowPath 来规避离屏渲染
  11. 对于特殊形状的 view,使用 layer mask 并打开 shouldRasterize 来对渲染结果进行缓存
    对于模糊效果,不采用系统提供的
  12. UIVisualEffect,而是另外实现模糊效果(CIGaussianBlur),并手动管理渲染结果

https://zhuanlan.zhihu.com/p/72653360
http://lemon2well.top/2018/08/29/iOS%20%E5%BC%80%E5%8F%91/iOS%E4%B8%AD%E7%9A%84%E5%9C%86%E8%A7%92%E5%A4%84%E7%90%86%EF%BC%88%E7%BB%88%E7%BB%93%E7%AF%87%EF%BC%89/
https://bestswifter.com/efficient-rounded-corner/

  1. 场景