Привет!Я пытаюсь нарисовать серию кругов в CALayer, который находится в масштабируемом UISCrollView.Это слой, который увеличивает масштаб.Если я рисую круги с помощью CAShapeLayer, то они прекрасно масштабируются:
CAShapeLayer plotLayer = [CAShapeLayer layer];
plotLayer.bounds = self.bounds;
plotLayer.anchorPoint = CGPointZero;
plotLayer.position = CGPointZero;
CGMutablePathRef path = CGPathCreateMutable();
for (id one in many) {
CGRect ellipseRect = [one circleRect];
CGPathAddEllipseInRect(path, NULL, ellipseRect);
}
plotLayer.path = path
CFRelease(path);
[self.layer addSublayer:plotLayer];
[plotLayer setNeedsDisplay];
Однако, когда я пытаюсь нарисовать их с использованием графики с ванильным ядром в моем методе drawLayer: inContext:, круги становятся очень неровными (прямо про-alassed!) Никакое количество jialgery-pokery от antialias, похоже, не поможет:
-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context
{
CGContextSetAllowsAntialiasing(context, true);
CGContextSetShouldAntialias(context, true);
CGContextClip(context);
for (id one in many) {
CGRect ellipseRect = [one circleRect];
CGContextStrokeEllipseInRect(context, ellipseRect);
}
}
Я пытаюсь выяснить, что делает CAShapeLayer, чтобы получить такой хороший сглаживатель, чтобы (кроме моего собственного назидания) яможет использовать все преимущества основной графики в моем чертеже, а не только штрих / заливку, которые я могу получить с помощью CAShapeLayer.Я просто где-то пропустил преобразование?
Большое спасибо!