2009-08-23 54 views
0

我有一個UIView,我想給漸變背景,我想知道如何實現儘可能高效。實現UIView背景的最快方法是什麼?

我正在考慮三個選項:

  1. 創建的UIImageView作爲子視圖,並給它的梯度顯示的圖像。

  2. 在原始UIView的drawRect中繪製漸變圖像。

  3. 在drawRect中繪製漸變:,但這次使用CoreGraphics'從頭創建它'。

這三個中的哪一個最快/內存密集度最低? (最快跑,不寫)

謝謝!

回答

2
  • 創建一個UIImageView作爲主視圖的子視圖將是獲得你想要的最快捷的方式。
  • 將圖像繪製到視圖的上下文將是更多的內存密集型選項。
  • 使用Core Graphics在代碼中繪製漸變將是更有效的方法。

事情要記住:

你有小到無過的drawRect執行時多久控制,所以你不希望是這樣的方法中的內存分配做的事情。

drawRect可以在同一個運行循環中被多次調用,所以在該方法中創建自動釋放對象也不是一個好主意,因爲它們可能堆疊起來並消耗更多的內存。

+0

非常感謝! – 2009-08-23 15:54:03

+0

創建一個圖像,然後在drawRect中繪製:會比內存密集得多,但比每次繪製漸變要快。如果應用程序受CPU限制,請使用緩存的圖像;如果應用程序內存限制,直接繪製漸變。 – rpetrich 2009-08-24 10:39:32

1

如果將漸變渲染爲UIImage很方便 - 您可能需要考慮類似的東西。 UIImage * gradientImage = GetGradientImage();方法如下: //你的代碼 self.view.backgroundColor = [UIColor colorWithPatternImage:gradientImage];

您需要平衡大梯度所需的內存與重複計算和繪製所需的時間。

這適用於很多需要做小背景自定義的地方,或者您認爲需要UIImageView的地方,以便在另一個視圖上繪製背景。

託德

相關問題