美文网首页
iOS开发方形图形切特定位置圆角

iOS开发方形图形切特定位置圆角

作者: revolution丶 | 来源:发表于2024-09-17 15:30 被阅读0次

    背景:iOS开发中会经常要求切圆角,常规圆角好切,但如果要求切特定位置圆角,比如左边正常方角,右边上下圆角。这样的情况就会麻烦一点。


    左边正常方角,右边上下圆角.png

    传统方法

    利用贝塞尔曲线

    // 创建一个带有椭圆形圆角的路径    
    UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:roundedView.bounds byRoundingCorners: UIRectCornerTopRight | UIRectCornerBottomRight cornerRadii:CGSizeMake(10, 10)];  
    // 创建一个形状图层
    CAShapeLayer *shapeLayer = [CAShapeLayer layer];    
    shapeLayer.path = path.CGPath;
    // 将形状图层设置为视图的遮罩    
    yourView.layer.mask = shapeLayer;
    
    //其中UIRectCornerAllCorners的枚举值有以下,你可以根据自己的需要对特定的圆角裁切
    typedef NS_OPTIONS(NSUInteger, UIRectCorner) {
        UIRectCornerTopLeft     = 1 << 0,
        UIRectCornerTopRight    = 1 << 1,
        UIRectCornerBottomLeft  = 1 << 2,
        UIRectCornerBottomRight = 1 << 3,
        UIRectCornerAllCorners  = ~0UL
    };
    
    

    该方法赋值的yourView必须给定frame,如果你是用Masonry库来给yourView添加约束,则需要先执行layoutIfNeeded方法后再赋值贝塞尔曲线遮罩,否则圆角会因为fram为0而不生效。

    [yourView layoutIfNeeded];
    

    快速方法

    一句话代码

    yourView.layer.maskedCorners = kCALayerMaxXMinYCorner | kCALayerMaxXMaxYCorner;
    

    添加到view.layer.cornerRadius = xxx;的后面,即可快速指定需要切那个圆角。并且支持Masonry库,无需指定frame。

    完整代码如下:

    UIView *view = [[UIView alloc] init];   
    view.backgroundColor = [UIColor redColor];    
    view.layer.cornerRadius = 100;
    view.layer.maskedCorners = kCALayerMaxXMinYCorner | kCALayerMaxXMaxYCorner;
    [self.view addSubview:view];
    [view mas_makeConstraints:^(MASConstraintMaker *make) {   
        make.size.mas_equalTo(CGSizeMake(200, 200));        
        make.center.mas_equalTo(self.view); 
    }];
    
    
    view.layer.maskedCorners = kCALayerMaxXMinYCorner|kCALayerMaxXMaxYCorner; .png

    相关文章

      网友评论

          本文标题:iOS开发方形图形切特定位置圆角

          本文链接:https://www.haomeiwen.com/subject/tbdgljtx.html