在开发中,添加圆角似乎再常见不过了。不过它带来的性能问题以及离屏渲染问题,也受到部分开发者的注意。
如何才能在不影响性能的前提下添加圆角呢?
相信大家也看过很多博客,写得也很不错,都是这种解决办法。我随便列举几个
- 通过设置
CALayer
的mask
属性来切,这个无法避免离屏渲染,不推荐。 - 通过
UIGraphicsBeginImageContextWithOptions()
创建一个 Image 的图形上下文,在上面绘制 path 并裁剪,最终生成新的UIImage
,这个可行,但是图片尺寸是有限制的,如果 size 过大,会导致内存暴涨,扛不住,直接GG - iOS 9 之后,
UIImageView
设置png格式的图片时,并且没有backgroundColor
时,设置其layer
的cornerRadius
不会触发离屏渲染。
好消息!好消息!WWCD 2018 告诉我们,有 UIGraphicsImageRenderer
这么一个类,它比 UIGraphicsBeginImageContextWithOptions()
这个方法要降低75%的内存消耗!
坏消息是什么?它只支持 iOS 10 以上的版本。
那么 iOS 10 之前