2012-02-29 49 views
1

我現在有一個奇怪的問題。我在調用drawRect的UIViewControllers UIView中生成一個圖形,遍歷整個代碼過程而不會崩潰,但什麼都不會產生。如果我點擊UIView中的一個UI對象,drawRect會重新加載並顯示我的圖像。在drawRect中繪圖總是被調用,但並不總是產生任何東西

與此唯一的好處是,它在每次首次加載時都會發生,但它也會在稍後發生。

這通常工作,所以我錯過了像重新加載/設置功能?

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextClearRect(context, rect); 
CGContextSetRGBFillColor(context, 1, 1, 1, 1.0f); 
CGContextFillRect(context, rect); 

CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 
CGContextSetLineWidth(context, 5.0); 

CGContextMoveToPoint(context, 20, 20); 
CGContextAddLineToPoint(context, 40, 40); 
CGContextStrokePath(context); 
+2

你爲什麼要調用'UIGraphicsEndImageContext()'? – 2012-02-29 20:30:19

+0

好點,這是一些舊代碼的一部分,問題仍然存在 – 2012-02-29 20:37:24

回答

-1

聽起來就像當你想到它是你的drawRect:代碼是沒有得到調用。確保你在你的UIView上根據需要調用setNeedsDisplay

+0

是的,它正在調用'setNeedsDisplayInRect':但仍然沒有 – 2012-02-29 20:31:18

1

您的代碼是直接撥打-drawRect:嗎?如果是這樣,停止那。在調用-drawRect:之前,UIView設置繪圖上下文,以便您所有的覆蓋必須做的是繪製。如果您嘗試直接調用該方法,繪圖上下文將無法正確設置,並且您的繪圖將在錯誤的地方結束,或者根本就沒有結果。當您讓系統管理繪圖時,繪圖正確地爲您工作,在這種情況下,將在調用-drawRect:之前正確設置上下文。

+0

葉當前我通過'setNeedsDisplayInRect'調用它,並且在那之前只是'setNeedsDisplay' – 2012-02-29 20:34:58