你可以这样说:
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;
更新:
如果您需要边框只需创建另一个CAShapeLayer
并将其添加到视图的图层作为子图层。像这样(的地方下面上的代码的代码):
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];
在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
尝试使用'UIBezierPath * maskPath = [UIBezierPath新];'然后用'addLineToPoint:','addArcWithCenter:半径:由startAngle:endAngle:顺时针方向:'方法。 – 2014-09-02 05:42:23
你的代码似乎没问题。只需检查您是否添加了QuartzCore框架并在您正在编写此代码的类中导入。我不知道情况确实如此,但早些时候发生在我身上。 – 2014-09-02 06:22:31
可能的重复[Rounded UIView使用CALayers - 只有一些角落 - 如何?](http://stackoverflow.com/questions/2264083/round-uiview-using-calayers-only-some-corners-how) – Stuart 2014-09-02 06:34:53