很常

给UIImageView设置圆角

2021-04-17  本文已影响0人  落魄的iOS程序员

1、通常情况下图片会价格圆角,这样看起来会美观一些,而我们通常添加圆角的方法都是:imageView.layer.cornerRadius = 10;imageView.clipsToBounds = YES; 这样做会消耗性能,而这样做显得非常简单方便,如果在较多图片的情况下不建议这样做,

2、可以给UIImage添加生成图片圆角的扩展API,如:

- (UIImage *)mt_imageWithCornerRadius:(CGFloat)radius {

    CGRect rect = (CGRect){0.f, 0.f, self.size};

    //    创建一个基于位图的上下文(context),并将其设置为当前上下文(context) size图片大小,opaque是否透明,scale缩放比列

    UIGraphicsBeginImageContextWithOptions(self.size, NO, UIScreen.mainScreen.scale);

    //  添加路径 UIGraphicsGetCurrentContext(); 设置绘图的上下文 使用贝塞尔曲线设置路径

    CGContextAddPath(UIGraphicsGetCurrentContext(),[UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:radius].CGPath);

    // context裁剪路径,后续操作的路径

    CGContextClip(UIGraphicsGetCurrentContext());

    [self drawInRect:rect];

    //    获取修改之后的image

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    //    最后移除栈顶的基于当前位图的图形上下文。

    UIGraphicsEndImageContext();

    return image;

}

3、最后在使用image的时候调用即可:

UIImage *mtImage = [[UIImage imageNamed:@“imageName”] mt_imageWithCornerRadius:10];

imageView.image = mtImage;

这里需要注意的是圆角设置的时候你过你的image大小和imageVIew大小不一致,那么你的小心使用圆角的数值,不然可能得不到你预想的圆角大小,因为这里是获取图片大小然后设置传入数值的圆角,如果image和imageView大小不一致,那么会同比缩放;

上一篇下一篇

猜你喜欢

热点阅读