我想在同一个for
循环中将对象绘制到两个单独的 CGLayer,但不确定如何执行此操作。
例如,我想在三个蓝色圆圈后面画三个橙色圆圈,橙色圆圈在一层,蓝色圆圈在另一层。以下代码会将每个圆圈放在前一个圆圈的顶部:
-(void) drawRect:(CGRect)rect {
UIBezierPath *circle;
for (int i = 1; i <= 3; i++) {
// Create an orange circle
circle = [UIBezierPath bezierPathWithOvalInRect:CGRectInset(CGRectMake(i*50, 80, 50, 50), 0, 0)];
circle.lineWidth = 4.0f;
[[UIColor colorWithRed:1.0 green:0.75 blue:0 alpha:1.0] setFill];
[[UIColor orangeColor] setStroke];
[circle stroke];
[circle fill];
// Create a blue circle
circle = [UIBezierPath bezierPathWithOvalInRect:CGRectInset(CGRectMake(25 + i*50, 80, 50, 50), 0, 0)];
circle.lineWidth = 4.0f;
[[UIColor colorWithRed:0 green:0.5 blue:1.0 alpha:1.0] setFill];
[[UIColor blueColor] setStroke];
[circle stroke];
[circle fill];
}
}
我将如何修改它以使三个橙色圆圈最终orangeLayer
位于 a 中的三个蓝色圆圈后面blueLayer
?我想这与保存和恢复上下文有关,但我无法真正理解它。
非常感谢!
PS:我意识到我可以简单地使用两个for
循环内联来实现正确的效果,但这个例子是为了学习分层的教学目的。谢谢!