2014-03-01 32 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