• iOS设置圆角的三种方式


    第一种方法:通过设置layer的属性

    最简单的一种,但是很影响性能,一般在正常的开发中使用很少.

    1
    2
    3
    4
    5
    6
    7
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    //只需要设置layer层的两个属性
    //设置圆角
    imageView.layer.cornerRadius = imageView.frame.size.width / 2;
    //将多余的部分切掉
    imageView.layer.masksToBounds = YES;
    [self.view addSubview:imageView];

    第二种方法:使用贝塞尔曲线UIBezierPath和Core Graphics框架画出一个圆角

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
     imageView.image = [UIImage imageNamed:@"1"];
     //开始对imageView进行画图
     UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, 1.0);
     //使用贝塞尔曲线画出一个圆形图
     [[UIBezierPath bezierPathWithRoundedRect:imageView.bounds cornerRadius:imageView.frame.size.width] addClip];
     [imageView drawRect:imageView.bounds];
     imageView.image = UIGraphicsGetImageFromCurrentImageContext();
      //结束画图
     UIGraphicsEndImageContext();
     [self.view addSubview:imageView];

    第三种方法:使用CAShapeLayer和UIBezierPath设置圆角

    #import "ViewController.h"
    #import <AVFoundation/AVFoundation.h>
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        
        [super viewDidLoad];
        
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 200, 100)];
        imageView.image = [UIImage imageNamed:@"1"];
        UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:imageView.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerTopLeft cornerRadii:CGSizeMake(25, 5)];
        CAShapeLayer *maskLayer = [[CAShapeLayer alloc]init];
        maskLayer.frame = imageView.bounds;
        maskLayer.path = maskPath.CGPath;
        imageView.layer.mask = maskLayer;
        [self.view addSubview:imageView];
    }

    这三种方法中第三种最好,对内存的消耗最少啊,而且渲染快速。

    效果图:

  • 相关阅读:
    Windows7,Ubuntu双系统,用MBR引导
    把Adblock Plus的过滤规则应用到IE9
    Linux shell学习
    vxworks下面网络连接调试的搭建
    uboot网卡成功识别
    uboot功能扩展篇
    uboot终于显示串口信息了
    uboot解决flash failed无限挂起的问题
    问题解决随笔
    琐事皆休,开始找工作~
  • 原文地址:https://www.cnblogs.com/lurenq/p/7691233.html
Copyright © 2020-2023  润新知