Невозможно округлить колпачки в UIBezierPath Arc даже с kCGLineCapRound
Я не могу отображать закругленные колпачки на моей дуге, созданной с помощью UIBezierPath. Он по-прежнему отлично квадрат, независимо от того, установлен ли kCGLineCapRound или нет.
Этот вопрос должен быть таким же, как этот, однако решение не работает.
Вот пример кода, который у меня есть в viewWillAppear (только для тестовых целей):
int radius = 100;
CAShapeLayer *arc = [CAShapeLayer layer];
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(100, 50) radius:radius startAngle:M_PI endAngle:M_PI/150 clockwise:YES];
path.lineCapStyle = kCGLineCapRound;
arc.path = path.CGPath;
arc.position = CGPointMake(CGRectGetMidX(self.view.frame)-radius, CGRectGetMidY(self.view.frame)-radius);
arc.fillColor = [UIColor clearColor].CGColor;
arc.strokeColor = [UIColor purpleColor].CGColor;
arc.lineWidth = 10.0f;
arc.cornerRadius = 3.0f;
Вот как это выглядит:
![whyy]()
Я беспомощен, поэтому буду признателен за любую помощь. Спасибо, ребята.
Ответы
Ответ 1
Используйте свойство lineCap
CAShapeLayer
, а не lineCapStyle
пути.
arc.lineCap = kCALineCapRound;
Если вы вызываете метод path stroke
(например, если вы делаете это в drawRect
или вручную рисуете в UIGraphicsContext
), тогда установите атрибуты, такие как стили cap или join в UIBezierPath
. Но при использовании CAShapeLayer
атрибуты устанавливаются на уровне формы, а не в пути.