2010-02-08 72 views
0

我想知道這是最好的方式,在速度和效率方面,畫出一個幀周圍的圖像在iPhone上,特別是當我不得不抽籤這些圖像:Quartz for iPhone是否繪製視圖的不可見部分?

1)繪製圖像,然後周圍 或 2)繪製一個矩形,用某種顏色填充,然後繪製矩形內的圖像留下一些偏移像素以模仿幀

不石英繪製一切,它被告知或者是它的智能框架足以只繪製真正可見的東西? 我的感覺是,第一種方法更好,因爲實際上繪製的繪圖少。這是真的嗎?

感謝 P.

回答

1

如果您正在使用-drawRect:進行自定義繪製,則只能在視圖的範圍內進行石英繪圖。這就是說,我認爲如果您爲每個圖像簡單地創建UIImageViews,然後在視圖的圖層上使用borderWidth,borderColor和可能的cornerRadius屬性來設置邊框,您會看到最佳性能。例如:

imageView.layer.cornerRadius = 10.0f; 
imageView.layer.borderWidth = 3.0f; 
imageView.layer.borderColor = [[UIColor blackColor] CGColor]; 

將放置3個像素寬的黑色邊框你的看法,並給它在角落一個10像素的半徑。

+0

我想過這個解決方案,但我的圖像繪製在一個自定義的UITableViewCell中,爲了實現平滑滾動,我在drawRect中繪製所有東西,而不是添加子視圖。我想知道是否有可能在其superview的drawRect方法中繪製子視圖?有沒有一種方法,比如NSString的drawAtPoint或drawInRect,用於UIViews? – 2010-02-17 18:58:32

+0

您可以對UIView的圖層使用-renderInContext:,並將大多數圖層的內容直接繪製到Quartz上下文中。 – 2010-02-18 13:13:13

0

如果性能是一個問題,你應該儘量減少你的圖形上下文進行操作,尤其是沒有明顯的組件的人的數量。

在您的具體情況下,我認爲您需要在iPhone上測試這兩個選項(如果可能,請使用ist gen)並對它們進行基準測試。也許只是填充整個矩形而不是計算哪些像素是框架的一部分,哪些不是?

這取決於圖形芯片。

+0

它們只是矩形圖像,因此繪製邊框就像繪製矩形和描邊一樣簡單。無論如何,我想我必須做一些真正的基準。 – 2010-02-17 19:01:38

相關問題