2014-03-01 33 views
0

我试图在viewDidLoad中简单的圆圈,下面的代码:无效内容错误而绘制UIBezierPath

- (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

您的程序是否正常运行,除了记录此错误? – nhgrif

+0

它显示一个空白的视图。没有圈子。尽管应用程序不会崩溃。 –

回答

1

错误意味着你没有上下文来绘制路径,而你必须有一个。

由于此代码位于视图控制器中,因此您需要确定应该将哪个上下文绘制成。

你可以自己创建一个上下文并绘制你的路径,这将是有益的,例如,如果你想创建一个包含路径的图像。这将使用CGBitmapContextCreate完成。

或者,通过在视图控制器视图上下文中绘制路径,可能还需要查找更多内容。这在drawRect:方法中可用。所以,你可以在你的自定义视图子类中实现它,并在那里移动你的代码。

另一种方法是使用用路径创建的CAShapeLayer(使用CGPath)并将其添加为视图控制器视图图层的子图层。那么你根本不需要担心上下文......

+0

谢谢。添加了一个自定义UIView,并将这些行添加到drawrect方法中。 我可以使用主视图的图形吗? –

+0

如果您制作自定义类的主视图,那么是(在XIB/storyboard/loadView方法中) – Wain