2011-06-22 108 views
0

我目前有一個UIImage對象,它使用initWithFrame進行初始化,然後使用`CGContext在-(void)drawRect:(CGRect)rect{}中創建一些2D繪圖。非常基本。我想知道的是,我怎樣才能通過推動一個按鈕或任何事件(不僅在初始化)?在沒有initWithFrame的情況下在CGContext上繪製圖像

我想裏面drawRect代碼複製到一個新的方法叫做redraw但這會導致明顯的錯誤:

CGContextMoveToPoint: invalid context 0x0

我只是想知道如何能夠通過CGContext上畫而UIView的已創建。 沒有例如如何聆聽UIButton事件

謝謝。

回答

2

你只能在裏面畫一個UIView的drawRect:方法或者通過創建你自己的圖片上下文。您不能通過除drawRect:之外的任何方式畫到屏幕上,也不能執行CALayer的繪圖。您需要相應地在視圖上設置變量,然後致電setNeedsDisplay重新繪製它。例如,將一個屬性@property(retain) UIImage *image;添加到您的視圖中,在其上設置新圖像,然後撥打setNeedsDisplay(或者更好,實施setImage:方法並在此調用[self setNeedsDisplay];)。

+0

如果我經常(100hz)需要繪製一個新的矩形(只有一個彩色矩形),那麼這仍然是一個選項,或者我應該使用哪種替代方案? (CGContext做我需要的 - 除了重繪) – LouwHopley

+0

AFAIK iPhone的屏幕只有60Hz的刷新率。無論如何,如果你需要經常畫這些,你需要熟悉CoreAnimation並使用[CADisplayLink](https://developer.apple.com/library/ios/#documentation/QuartzCore/Reference/CADisplayLink_ClassRef/Reference/Reference。 HTML%23 // apple_ref/DOC/UID/TP40009031)。 – DarkDust

相關問題