【发布时间】:2016-10-24 15:42:50
【问题描述】:
我阅读了这篇关于绘制虚线(而不是虚线)的帖子 Draw dotted (not dashed!) line, with IBDesignable in 2017。但是,我一般对图形不太熟悉,我想知道如何使用 CALayer 来做到这一点(所以我不必做整个获取当前图形上下文的事情)。
我正在尝试制作一条看起来像这样的虚线(白色部分,忽略背景):
这是我用来生成虚线的代码:
CAShapeLayer *shapelayer = [CAShapeLayer layer];
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:startPoint];
[path addLineToPoint:endPoint];
[path setLineCapStyle:kCGLineCapRound];
UIColor *fill = [UIColor whiteColor];
shapelayer.strokeStart = 0.0;
shapelayer.strokeColor = fill.CGColor;
shapelayer.lineWidth = 4.0;
shapelayer.lineJoin = kCALineJoinRound;
shapelayer.lineDashPattern = [NSArray arrayWithObjects:[NSNumber numberWithInt:4],[NSNumber numberWithInt:6 ], nil];
shapelayer.path = path.CGPath;
return shapelayer;
如何镜像我引用的 SO 帖子中的代码但继续使用 CALayer?
我尝试像这样修改该帖子中的代码:
UIBezierPath * path = [[UIBezierPath alloc] init];
[path moveToPoint:startPoint];
[path addLineToPoint:endPoint];
[path setLineWidth:8.0];
CGFloat dashes[] = { path.lineWidth, path.lineWidth * 2 };
[path setLineDash:dashes count:2 phase:0];
[path setLineCapStyle:kCGLineCapRound];
[path stroke];
CAShapeLayer *returnLayer = [CAShapeLayer layer];
returnLayer.path = path.CGPath;
return returnLayer;
然而,这最终什么也没画。
【问题讨论】:
-
我不知道 CALayer,但很明显,如果您查看
UIBezierPath,您会画一条“直线”,而不是圆形。 -
@Larme 我刚刚贴了一张我想做的图片。
-
如果答案正常。请接受我的答案。
标签: ios objective-c calayer