Я пытаюсь создать круглую полосу загрузки и хочу использовать Core Graphics вместо маскировки изображений для создания эффекта. Однако я не получаю верность, на которую я надеялся: ![enter image description here](https://i.stack.imgur.com/hXg23.png)
Независимо от того, что я пробовал, неровности кажутся довольно плохими. Сглаживание включено, и я уже пытался уменьшить "плоскостность" до .1 на CGContextRef
. Изображение с симулятора (Retina), оно выглядит на устройстве немного лучше, но все же не так здорово.
Код чертежа в подклассе CALayer:
-(void)drawInContext:(CGContextRef)ctx {
CGPoint center = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2);
CGFloat delta = toRadians(360 * percent);
CGFloat innerRadius = 69.5;
CGFloat outerRadius = innerRadius + 12;
CGContextSetFillColorWithColor(ctx, [UIColor colorWithRed:99/256.0 green:183/256.0 blue:70/256.0 alpha:.5].CGColor);
CGContextSetStrokeColorWithColor(ctx, [UIColor colorWithRed:99/256.0 green:183/256.0 blue:70/256.0 alpha:10.0].CGColor);
CGContextSetLineWidth(ctx, 1);
CGMutablePathRef path = CGPathCreateMutable();
CGPathAddRelativeArc(path, NULL, center.x, center.y, innerRadius, -(M_PI / 2), delta);
CGPathAddRelativeArc(path, NULL, center.x, center.y, outerRadius, delta - (M_PI / 2), -delta);
CGPathAddLineToPoint(path, NULL, center.x, center.y-innerRadius);
CGContextAddPath(ctx, path);
CGContextFillPath(ctx);
CGContextAddPath(ctx, path);
CGContextStrokePath(ctx);
}
Это лучшее, что может сделать Core Graphics, или я что-то упустил?