添加圆角的4种方法

来源:互联网 发布:mac战网该服务器 编辑:程序博客网 时间:2024/06/06 23:54
//方法一: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




原创粉丝点击