2010-12-02 59 views
1

我有這個UIView,我subclassed和實現我自己的drawRect方法。iPhone - 清理UIView的外部drawRect

當drawRect方法第一次運行時,我搶用

ctx = UIGraphicsGetCurrentContext(); 

後面上的代碼,的drawRect外,我試圖清洗整個上下文用透明顏色填充在一個變量中的上下文,那麼我這樣做:

CGContextClearRect(ctx, self.bounds); 
[self setNeedsDisplay]; 

問題是上下文沒有被擦除,並繼續像以前一樣。

此時ctx不爲零。

我錯過了什麼?

感謝

回答

4

是沒可能的清算進入的drawRect?我不確定是否可以繪製drawRect的一面,即使是這樣,它也不完全是如何工作的。

+0

就是這樣。謝謝! – SpaceDog 2010-12-02 22:55:40

0

那是不是你很鄧賢蘭多的代碼,但是你儘量保留語境?

CGContextRetain(ctx)

+0

感謝。正如我所說,ctx在我清除它時是有效的,但我嘗試添加你建議的行,並且它不會擦除任何東西。 – SpaceDog 2010-12-02 21:34:34

2

這個怎麼樣?

[[UIColor clear] set]; ///< set clear color for stroke & fill 
CGContextFillRect(ctx, self.bounds); 

而且,從CGContextGetCurrentContext()中的CTX僅在有效的drawRect :,或UIGraphicesPushContext()和UIGraphicsPopContext(),或UIGraphcisBeginImageContext()和UIGraphicsEndImageContext之間()。

0

這樣的工作速度更快然後CGContextFillRect:

-(void) drawRect:(CGRect)rect{ 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextClearRect(ctx, rect); 
}