Я прочитал этот пост Draw dotted (not dashed!) line, with IBDesignable in 2017 о рисовании пунктирной линии (а не пунктирной линии). Тем не менее, я не очень хорошо знаком с графикой, и мне интересно, как я могу это сделать с помощью CALayer (так что мне не нужно делать все, чтобы получить текущую графику).Как создать круговую пунктирную линию как 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
@ Larme Я только что вставил изображение того, что я хочу сделать. – helloB
если ответ работает нормально. Добро пожаловать на мой ответ. –