//方法一:iOS 9 之后 UIButton设置圆角会触发离屏渲染,UIImageView里PNG图片设置不会,但是如果设置其它阴影效果还是会触发离屏渲染
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bird.jpg"]];
imageView.frame = CGRectMake(100, 100, 150, 150);
// 设置圆角的大小
imageView.layer.cornerRadius = 5;
[imageView.layer setMasksToBounds:YES];
[self.view addSubview:imageView];
//方法二:Core Graphics 自己画一个圆角矩形
UIImage *placeHolder = [[UIImage imageNamed:@"bird.jpg"] circleImage];
UIImageView *imageView = [[UIImageView alloc] initWithImage:placeHolder];
imageView.frame = CGRectMake(100, 100, 150, 150);
[self.view addSubview:imageView];
//方法三:贝塞尔曲线法
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
imageView.image = [UIImage imageNamed:@"bird.jpg"];
//开始对imageView进行画图
UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, [UIScreen mainScreen].scale);
//使用贝塞尔曲线画出一个圆形图
[[UIBezierPath bezierPathWithRoundedRect:imageView.bounds cornerRadius:imageView.frame.size.width] addClip];
[imageView drawRect:imageView.bounds];
imageView.image = UIGraphicsGetImageFromCurrentImageContext();
//结束画图
UIGraphicsEndImageContext();
[self.view addSubview:imageView];
//方法四:CAShapeLayer法
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
imageView.image = [UIImage imageNamed:@"bird.jpg"];
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:imageView.bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:imageView.bounds.size];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc]init];
//设置大小
maskLayer.frame = imageView.bounds;
//设置图形样子
maskLayer.path = maskPath.CGPath;
imageView.layer.mask = maskLayer;
[self.view addSubview:imageView];
UIImage 分类:
@implementation UIImage (Extension) - (UIImage *)circleImage { // 开始图形上下文 UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0); // 获得图形上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 设置一个范围 CGRect rect = CGRectMake(0, 0, self.size.width-90, self.size.height-90); // 根据一个rect创建一个椭圆 CGContextAddEllipseInRect(ctx, rect); // 裁剪 CGContextClip(ctx); // 将原照片画到图形上下文 [self drawInRect:rect]; // 从上下文上获取剪裁后的照片 UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); // 关闭上下文 UIGraphicsEndImageContext(); return newImage; } @end