探究头像圆角属性性能相关的问题
2016-11-06 本文已影响26人
吖几角
首先先添加一张图片,代码如下
![](https://img.haomeiwen.com/i1964708/882362a00ba081a7.png)
我们通过调试可以看出,混合模式是没有问题,颜色是绿的,也就说是没有透明的控件。
![](https://img.haomeiwen.com/i1964708/60797aa01b8ad167.png)
然后我们设置圆角属性,观察下出现的问题,代码如下
//设置圆角属性
iv.layer.cornerRadius = iv.bounds.size.width * 0.5;
iv.layer.masksToBounds = YES;
![](https://img.haomeiwen.com/i1964708/f55f177ba94343a8.png)
小猫变红了,说明是做过透明处理的,性能就会降低,所以说使用了如上代码会影响性能。今天探究的就是如何用绘图解决这个问题。我们可以去新建一个分类方法,方便以后的使用。
代码见下
![](https://img.haomeiwen.com/i1964708/30d53b48749c5cbb.png)
![](https://img.haomeiwen.com/i1964708/3752e7aea0d76bf0.png)
后续的需要处理裁切的黑色边框。
///设置填充的颜色
[[UIColor whiteColor] setFill];
UIRectFill(rect);
最后的结果如下
![](https://img.haomeiwen.com/i1964708/5593d5aee886d71a.png)
另外还有比较重要的一点点绘制图像的比较耗时,我们可以使用GCD异步去绘制图像,通过block回调的方法在返回图像,所以之前的代码要稍微坐下修改
- (void)JY_cornerRadiusImageWithSize:(CGSize)size completion:(void (^)(UIImage *img))completion{
将block当成参数来传递。
控制里调用
![](https://img.haomeiwen.com/i1964708/780560a3c1e3df71.png)
代码详情见地址。
https://github.com/jingyu982887078/-Demo
补充一张图片:
![](https://img.haomeiwen.com/i1964708/1bc2be07dce1d61c.png)