每次調用UIView的drawRect時,都會清除以前drawRect(使用Core Graphics)繪製的內容。我怎樣才能使之前的drawRect調用所呈現的路徑保持到我明確清除它爲止?如何防止UIView的drawRect清除以前的drawRect調用所繪製的路徑?
5
A
回答
3
您基本上需要剪切已經進行更改的「矩形」部分,只有這部分將被重新繪製。
- (void)setNeedsDisplayInRect:(CGRect)invalidRect
0
我很肯定這是沒有辦法的;這就是UIView設計的工作原理。如果要求,您的自定義視圖應該能夠隨時抽取自己的任何部分。這部分是因爲視圖可以做的不僅僅是出現在屏幕上。例如在桌面上可以打印,甚至在iPhone上,您可能希望將視圖的內容捕獲到位圖。
1
我現在正在處理這個問題。問題是在UIView上有一個名爲「clearsContextBeforeDrawing」的屬性,根據文檔應該解決這個問題,但是在我的經驗中,它不起作用。
我認爲最終解決這個問題的方法是分配一個屏幕外緩衝區,並在那裏完成所有的繪圖,然後將其繪製到drawRect方法的UIView中。
+1
是的,這也引發了其他問題:一個是iPhone/iPad只支持RGBA而不支持RGB,所以更新屏幕需要RGBA-> RGB轉換(這佔用99%的時間)。另外,它仍然會清除UIView徒然,絕對沒有目的。如果有人知道解決這些問題的方法,請ping! – gilm 2010-08-15 12:25:20
相關問題
- 1. 在drawRect中繪製大量的路徑
- 2. UIView drawRect繪製寬度錯誤的線
- 3. 調用drawRect繪製CALayer的頂部?
- 4. 無法在UIView中繪製UImage :: drawRect
- 5. 在UIView :: drawRect()之外繪製UIBezierPath?
- 6. 如何翻轉drawRect以便繪製?
- 7. iPhone - 清理UIView的外部drawRect
- 8. 如何繼承UIView,然後如何使用drawRect繪製圖形?
- 9. 要清除繪圖drawRect形狀圖層
- 10. 覆蓋UIView drawRect以僅繪製它的矩形
- 11. UIView的drawRect沒有被調用
- 12. 簡單的UIView drawRect沒有被調用
- 13. 調整大小的UIView和動態調整繪圖中的drawRect
- 14. 防止使用的drawRect或DrawBorder
- 15. UIView drawRect():填充除多邊形以外的所有東西
- 16. UIView drawRect vs initWithFrame
- 17. UIView drawRect black Window
- 18. 刷新UIView drawRect?
- 19. UIView drawRect問題
- 20. 如何用drawRect在UIView中繪製鏡像UIImage?
- 21. 使用drawRect繪製表格
- 22. 如何在drawRect中爲使用CGContextDrawPath等繪製的路徑填充顏色?
- 23. CALayer的shouldRasterize與UIView的drawRect?
- 24. 繪製的UIView的邊界之外從的drawRect
- 25. UIView的大小基於drawRect
- 26. UIView drawRect是生澀的
- 27. drawRect轉換後的UIView
- 28. UISclickView裏面的UIView DrawRect
- 29. 的UIView的drawRect:當你畫一條線,所以以前的圖紙不見了
- 30. 用的drawRect方法繪製 - 可可
問題不在於rect沒有重繪,而是在重新發布drawRect時,它會清除所有先前繪製的路徑。這似乎是Core Graphic繪圖程序的默認行爲。 – Boon 2009-02-28 18:46:53