iOS给UIImageView添加圆角的三种方法

前言

在iOS开发中我们经常会遇到给UIImageView添加圆角,如:给用户头像设置圆角等。在这里记录一下使用过的三种方法。

方法一:通过设置UIView的layer来设置圆角

    UIImageView *imgView = [UIImageView new];
    imgView.image = [UIImage imageNamed:@"aa"];
    imgView.layer.cornerRadius  = imgView.frame.size.width / 2;
    imgView.layer.masksToBounds = YES;

此方法的有个缺点是:会强制Core Animation提前渲染屏幕的离屏绘制, 而离屏绘制就会给性能带来负面影响,会有卡顿的现象出现

方法二:通过Graphics绘制图片,将图片裁剪成圆角

- (UIImage *)clipImage1:(UIImage *)image {
    UIGraphicsBeginImageContextWithOptions(image.size, NO, 0.0);
    
    // 获取上下文
    CGContextRef contextRef = UIGraphicsGetCurrentContext();
    
    // 添加一个圆
    CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);
    CGContextAddEllipseInRect(contextRef, rect);
    CGContextClip(contextRef);
    
    // 画图片
    [image drawInRect:rect];
    
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return newImage;
}

裁剪后设置图片即可

方法三: 依然是绘制图片,这次是通过贝塞尔曲线绘制图片

- (UIImage *)clipImage2:(UIImage *)image {
    UIGraphicsBeginImageContextWithOptions(image.size, NO, 1.0);
    
    CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);
    [[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:image.size.width / 2] addClip];
    
    [image drawInRect:rect];
    
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return newImage;
}

绘制后设置UIImageView的图片即可

总结:

以上设置图片圆角的三种方法,在使用过程中各有优缺点,需要根据实际情况具体判断使用方法。

另外推荐一下我的导航栏联动库:GKNavigationController

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,460评论 4 61
  • 一直都喜欢原创,碍于宝宝自己想象力不够,手也惨。第一次作品,临摹了两幅,混搭了一副 这个主题 生日快乐 因为宝宝属...
    糯糯团阅读 1,670评论 2 1
  • 这又是一个再熟悉不过的晚修了,太阳在沿着赤道上慢慢地偏移,光阴在老旧的玻璃窗上,映带着阳台外的树影晃动着;红光慵...
    北风过境文学社慕容槿然阅读 3,315评论 2 3
  • 夜雨声中背完今日份单词,准备睡觉时突然想起来白天kindle里推荐的简书,想着试试,大概可以随便写写吧,试试看了。...
    夏日归来阅读 1,270评论 0 0
  • 在川流不息的人海里 你不要惊奇我为何那样看你---- 冷得似箭,一下要洞穿你的世界 你更不要生气 因为这一箭射掉的...
    故乡老酒阅读 2,981评论 1 1

友情链接更多精彩内容