iOS中 切圆角,任意几个角(带边框,不带边框)__OC和Swift版本 韩俊强的博客

需求:

1.日常我们在切控件圆角时会遇到想切任意圆角?

2.切过圆角带边框和不带边框的选择?

那么今天我们就用Objective-C和Swift都给它实现了:


OC代码:

UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 200, 70)];
    myLabel.text = @"Hi,小韩哥!";
    myLabel.font = [UIFont systemFontOfSize:20.0];
    myLabel.textAlignment = NSTextAlignmentCenter;
    [self.view addSubview:myLabel];
    
    CGFloat radius = 21.0f;
    
    UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:myLabel.bounds byRoundingCorners:UIRectCornerTopRight|UIRectCornerBottomRight cornerRadii:CGSizeMake(radius, radius)];
    CAShapeLayer * mask  = [[CAShapeLayer alloc] init];
    mask.lineWidth = 5;
    mask.lineCap = kCALineCapSquare;
    
    // 带边框则两个颜色不要设置成一样即可
    mask.strokeColor = [UIColor redColor].CGColor;
    mask.fillColor = [UIColor yellowColor].CGColor;
    
    mask.path = path.CGPath;
    [myLabel.layer addSublayer:mask];

Swift代码:

override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(myLabel);
        myLabel.layer.addSublayer(myLayer);
        
    }

    private lazy var myLabel:UILabel = {
        let label = UILabel.init(frame: CGRect.init(x: 100, y: 100, width: 200, height: 70));
        label.text = "Hi,小韩哥!";
        label.textAlignment = .center;
        return label;
    }()
    private lazy var myLayer:CAShapeLayer = {
        
        let path = UIBezierPath.init(roundedRect: self.myLabel.bounds, byRoundingCorners: [.topRight , .bottomRight] , cornerRadii: self.myLabel.bounds.size);
        let layer = CAShapeLayer.init();
        layer.path = path.cgPath;
        layer.lineWidth = 5;
        layer.lineCap = kCALineCapSquare;
        layer.strokeColor = UIColor.red.cgColor;
        //  注意直接填充layer的颜色,不需要设置控件view的backgroundColor
        layer.fillColor = UIColor.yellow.cgColor;
        return layer;
        
    }()

效果:



第三种思路:


Demo : https://github.com/iOS-OC-Developer/JQRadiusView


更多惊喜:手机加iOS开发者交流群:446310206



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值