/ / Не могат да закръглят капачките в UIBezierPath Arc дори с kCGLineCapRound - ios, aim-c, заоблени ъгли, uibezierpath

Не е в състояние да закръгли шапки в UIBezierPath Arc дори с kCGLineCapRound - ios, objective-c, заоблени ъгли, uibezierpath

Не мога да покажа заоблени шапки на моята дъга, създадена с помощта на 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

Аз съм безпомощен, така че бих оценил всяка помощ. Благодаря момчета.

Отговори:

31 за отговор № 1

Използвай lineCap собственост на CAShapeLayer а не lineCapStyle на пътеката.

arc.lineCap = kCALineCapRound;

Ако викате пътя "s stroke метод (например, ако правите това в drawRect или ръчно рисуване в a UIGraphicsContext) след това задайте атрибути като cap или join stils в UIBezierPath, Но при използване CAShapeLayer, атрибутите са зададени на слоя във формата, а не на пътя.