image 圆角

28 篇文章 0 订阅
5 篇文章 0 订阅


方法一:效率高
 


 aImageView.layer.cornerRadius = aImageView.frame.size.width/2.0;  
   aImageView.layer.masksToBounds = YES;


方法二:效率低


CAShapeLayer *layer = [CAShapeLayer layer];  
UIBezierPath *aPath = [UIBezierPath bezierPathWithOvalInRect:aImageView.bounds];  
layer.path = aPath.CGPath;  
aImageView.layer.mask = layer;


此时,有layer 的离屏渲染,这会进行上下文的切换,导致效率下降。


解决的方法:
 1,不要在滚动视图使用cornerRadius或者mask。
 2,如果你非要做,那么这样也可以拯救你: 
   self.layer.shouldRasterize = YES;  
   self.layer.rasterizationScale = [UIScreen mainScreen].scale;
     shouldRasterize = YES会使视图渲染内容被缓存起来,下次绘制的时候可以直接显示缓存,当然要在视图内容不改变的情况下。
3,还是采取预先生成圆角图片,并缓存起来这个方法才是比较好的手段。预处理圆角图片可以在后台处理,处理完毕后缓存起来,再在主线程显示,这就避免了不必要的离屏渲染了。

4,在图片上面覆盖一个镂空圆形图片的方法可以实现圆形头像效果,这个也是极为高效的方法。缺点就是对视图的背景有要求,单色背景效果就最为理想。


方法三:


 UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale);
 [[UIBezierPath bezierPathWithRoundedRect:RECT     cornerRadius:RADIUS] addClip];
 [image drawInRect:RECT];
 UIImage* imageNew =     UIGraphicsGetImageFromCurrentImageContext();
 UIGraphicsEndImageContext();


参考:http://www.cocoachina.com/ios/20150803/12873.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值