Невозможно скруглить заглавные буквы в 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;

Вот как это выглядит:

почему

Я беспомощен, поэтому буду признателен за любую помощь. Спасибо, парни.


person Petr Brazdil    schedule 19.08.2014    source источник


Ответы (1)


Используйте свойство lineCap CAShapeLayer, а не lineCapStyle пути.

arc.lineCap = kCALineCapRound;

Если вы вызываете метод stroke пути (например, если вы делаете это в drawRect или рисуете вручную в UIGraphicsContext), то установите такие атрибуты, как кепка или стили соединения в UIBezierPath. Но при использовании CAShapeLayer атрибуты устанавливаются для слоя формы, а не для пути.

person Rob    schedule 19.08.2014