我正在尝试使用以下代码在viewdidload中创建一个简单的圆圈:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIBezierPath* aPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(100,100) radius:100 startAngle:M_PI/6 endAngle:M_PI clockwise:YES];
[aPath fill];
}
我收到以下错误:
CGContextSaveGState: invalid context 0x0. This is a serious error. This application, or a library it uses, is using an invalid context and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update.
我知道这个问题已经在讨论here,但我无法联系到。错误发生在
[aPath fill];
这与应用程序生命周期有关吗?
答案 0 :(得分:1)
错误意味着你没有上下文来绘制路径,你必须有一个。
由于此代码位于视图控制器中,因此您需要确定应该绘制哪个上下文。
您可以自己创建一个上下文并绘制路径,这将是有益的,例如,如果您想创建一个包含路径的图像。这将使用CGBitmapContextCreate
完成。
或者,通过将路径绘制到视图控制器视图上下文中,可能还有更多您正在寻找的内容。这在drawRect:
方法中可用。因此,您可以在自定义视图子类中实现它,并将代码移动到那里。
另一种方法是使用由路径创建的CAShapeLayer
(使用CGPath
)并将其添加为视图控制器视图层的子层。那么你根本不需要担心背景......