我在让主题电话正常工作时遇到问题。下面的测试应该绘制两个橙色和一个绿色的矩形。
这是我对以下代码的理解...
- 我在 50,50 处画了一个橙色矩形
- 我在 200,200 处调用绘制 greenRect,发送当前上下文
- 我将当前上下文推入堆栈,更改笔触颜色并在 100,100 处绘制一个绿色矩形
- 我弹出应该恢复原始上下文的当前上下文(橙色笔触颜色)
- 然后我画出最后一个应该是橙色的矩形
最后一个矩形应该是橙色的,但是是绿色的,告诉我我修改了原始上下文
想法?
- (void)drawRect:(CGRect)rect{
CGRect aRectangle=CGRectMake(50., 50., 40., 40.);
UIBezierPath *path=[UIBezierPath bezierPathWithRect:aRectangle];
UIColor *strokeColor=[UIColor orangeColor];
[strokeColor setStroke];
[path stroke];
CGContextRef context=UIGraphicsGetCurrentContext();
[self drawGreenRect:context];
CGRect anotherRectangle=CGRectMake(100., 100., 40., 40.);
UIBezierPath *anotherPath=[UIBezierPath bezierPathWithRect:anotherRectangle];
[anotherPath stroke];
}
- (void)drawGreenRect:(CGContextRef)ctxt{
UIGraphicsPushContext(UIGraphicsGetCurrentContext());
CGRect aRectangle=CGRectMake(200., 200., 40., 40.);
UIBezierPath *path=[UIBezierPath bezierPathWithRect:aRectangle];
UIColor *strokeColor=[UIColor greenColor];
[strokeColor setStroke];
[path stroke];
UIGraphicsPopContext();
}