iOS 给UI视图设置部分圆角(OC/Swift)

有时候,我们在项目中会有这样的需求,一个button或者label只要切左边两个角的圆角或者只要一个角的圆角,比如下图

这个时候,系统单纯的layer.cornerRadius的需求就不能满足我们,我们就需要通过图层蒙版来帮助我们。

OC版

CGRect rect = cornerView.bounds;
CGSize radio = CGSizeMake(10, 10);//圆角尺寸
UIRectCorner corner = UIRectCornerBottomLeft | UIRectCornerBottomRight;//这只圆角位置
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:corner cornerRadii:radio];
CAShapeLayer *masklayer = [[CAShapeLayer alloc]init];//创建shapelayer
masklayer.frame = cornerView.bounds;
masklayer.path = path.CGPath;//设置路径
cornerView.layer.mask = masklayer;

Swift版

let rect = cornerView.bounds 
let radio = CGSize(width: 30, height: 30) // 圆角尺寸
let corner = UInt8(UIRectCorner.topLeft.rawValue) | UInt8(UIRectCorner.topRight.rawValue) // 这只圆角位置
let path = UIBezierPath(roundedRect: rect, byRoundingCorners: UIRectCorner(rawValue: UIRectCorner.RawValue(corner)), cornerRadii: radio)
let masklayer = CAShapeLayer() // 创建shapelayer
masklayer.frame = cornerView.bounds
masklayer.path = path.cgPath // 设置路径
cornerView.layer.mask = masklayer

完整版demo:点我

你可能感兴趣的:(iOS 给UI视图设置部分圆角(OC/Swift))