如何使用CAShapeLayer创建圆角

Dav*_*mes 9 cocoa-touch ios

有没有办法为圆角添加圆角CAShapeLayer?在我的情况下,我需要形状图层来创建虚线边框lineDashPattern.

带有虚线的圆角 - 不正确

^注意虚线是如何不圆化的

Dav*_*mes 23

答案很简单.创建带圆角的贝塞尔曲线路径.

self.clipsToBounds = YES; 
self.layer.cornerRadius = 10.0;

self.border = [CAShapeLayer layer];
self.border.fillColor = nil;
self.border.path = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:10.0];
self.border.frame = self.bounds;

self.border.strokeColor = [UIColor purpleColor].CGColor;
self.border.lineWidth = borderWidth * 2; // double desired width as half will be clipped
self.border.lineDashPattern = @[@15];

[self.layer addSublayer:self.border];
Run Code Online (Sandbox Code Playgroud)

带有虚线的圆角 - 正确