ios - 如何只为 UIView 的左下角、右下角和左上角设置 cornerRadius?

标签 ios objective-c iphone xcode ipad

有没有办法只为 UIView 的左下角、右下角和左上角设置 cornerRadius?

我尝试了以下方法,但最终使 View 消失了。下面的代码有什么问题吗?

    UIBezierPath *maskPath;
    maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:(UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(20.0, 20.0)];
    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
    maskLayer.path = maskPath.CGPath;
    view.layer.mask = maskLayer;

最佳答案

你可以这样做:

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.viewOutlet.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(10.0, 10.0)];

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = self.view.bounds;
maskLayer.path  = maskPath.CGPath;
self.viewOutlet.layer.mask = maskLayer;

enter image description here

更新:
如果您需要边框,只需创建另一个 CAShapeLayer 并将其添加到 View 的图层作为子图层。像这样(把这段代码放在上面的代码下面):

CAShapeLayer *borderLayer = [[CAShapeLayer alloc] init];
borderLayer.frame = self.view.bounds;
borderLayer.path  = maskPath.CGPath;
borderLayer.lineWidth   = 4.0f;
borderLayer.strokeColor = [UIColor blackColor].CGColor;
borderLayer.fillColor   = [UIColor clearColor].CGColor;

[self.viewOutlet.layer addSublayer:borderLayer];

enter image description here

在 swift 3.0 中是这样的:

let maskPath = UIBezierPath.init(roundedRect: self.viewOutlet.bounds, byRoundingCorners:[.topLeft, .bottomLeft], cornerRadii: CGSize.init(width: 10.0, height: 10.0))
let maskLayer = CAShapeLayer()
maskLayer.frame = self.viewOutlet.bounds
maskLayer.path = maskPath.cgPath
self.viewOutlet.layer.mask = maskLayer

关于ios - 如何只为 UIView 的左下角、右下角和左上角设置 cornerRadius?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25616382/

相关文章:

ios - Swift: TableView Controller 无法使用核心数据(加载表时出现 NSRangeException)

ios - swift 的消息气泡约束

objective-c - 禁用菜单项

ios - 减少 UICollectionView 中的项目间距

ios - 快速检查对象的属性是否存在

android - 如何将 TextField 居中放置在 Container 中?

ios - 如何将 iOS “Open In…” 功能添加到我的导航应用程序

ios - Objective-c 蓝牙说它已连接但 CBCentralManager 没有发现它

objective-c - CALayer 和 View 消失了

iphone - 通过分段控件在标准样式表和分组样式表之间翻转