2010-04-05 41 views
1

我有一個名爲「drawingViewController」類觀點,我有drawRect方法:如何使用其他方法調用iPhone進行繪製?

- (void)drawRect:(CGRect)rect { 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(context, 2.0); 
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); 
    CGContextMoveToPoint(context, 0.0f, 0.0f); 
    CGContextAddLineToPoint(context, 100.0f, 100.0f); 
    CGContextStrokePath(context); 


} 

但我想定義一些其他繪圖方法,但我以前不工作,我怎麼可以這樣做除了調用drawRect方法? thz提前。

回答

2

爲什麼你想要另一種方法?當客戶區域需要繪製或重繪時,這是由框架調用的。

要清楚,你永遠不會自己撥打drawRect:。您致電setNeedsDisplay:setNeedsDisplayInRect:

+0

所以,如果我想更新視圖,我仍然需要調用drawRect方法? – Tattat 2010-04-05 03:21:07

+0

重申:*你永遠不會自己調用'drawRect:'*。調用其他函數,框架會爲你調用'drawRect:'。 – 2010-04-05 05:57:44

1

drawRect:將被框架調用來繪製視圖。因此,如果你想更新視圖,你需要通過調用setNeedsDisplay來指示視圖需要更新的框架:或者setNeedsDisplayInRect:

1

如上所述,你應該只調用setNeedsDisplay:並讓系統調用drawRect:在適當的時候。

如果您需要在調用drawRect之外的時間進行繪製,例如在單獨的線程中,請根據需要維護一個屏幕外的CGContext,然後將內容複製到UIGraphicsGetCurrentContext drawRect:context。

將一個上下文複製到另一個上下文的方法是使用引用CGBitmapContext擁有的相同數據的CGDataProvider來設置CGImage。在離屏CGBitmapContext中繪製圖形,然後使用CGContextDrawImage繪製到其他上下文中。

相關問題