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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS给UIImageView添加圆角的三种方法相关的知识,希望对你有一定的参考价值。

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

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

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

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

裁剪后设置图片即可

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

绘制后设置UIImageView的图片即可

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

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

UIImageView添加圆角

 

  • 最直接的方法就是使用如下属性设置
    imgView.layer.cornerRadius = 10;
    // 这一行代码是很消耗性能的
    imgView.clipsToBounds = YES;
    **这是离屏渲染(off-screen-rendering),消耗性能的**
  • 给UIImage添加生成圆角图片的扩展API:这是on-screen-rendering

    - (UIImage *)imageWithCornerRadius:(CGFloat)radius {
    CGRect rect = (CGRect){0.f, 0.f, self.size};
    
    UIGraphicsBeginImageContextWithOptions(self.size, NO, UIScreen.mainScreen.scale);
    CGContextAddPath(UIGraphicsGetCurrentContext(),
     [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:radius].CGPath);
    CGContextClip(UIGraphicsGetCurrentContext());
    
    [self drawInRect:rect];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    return image;
    }

以上是关于iOS给UIImageView添加圆角的三种方法的主要内容,如果未能解决你的问题,请参考以下文章

iOS 设置图片圆角的三种方式

UIImageView添加圆角

UIImageView添加圆角

在 UITableView 中有一个带有圆角的 UIImageView 的确定方法?

iOS切圆角方法解决离屏渲染问题

为所有 UIImageViews 添加圆角