我有一個UIView,我想給漸變背景,我想知道如何實現儘可能高效。實現UIView背景的最快方法是什麼?
我正在考慮三個選項:
創建的UIImageView作爲子視圖,並給它的梯度顯示的圖像。
在原始UIView的drawRect中繪製漸變圖像。
在drawRect中繪製漸變:,但這次使用CoreGraphics'從頭創建它'。
這三個中的哪一個最快/內存密集度最低? (最快跑,不寫)
謝謝!
我有一個UIView,我想給漸變背景,我想知道如何實現儘可能高效。實現UIView背景的最快方法是什麼?
我正在考慮三個選項:
創建的UIImageView作爲子視圖,並給它的梯度顯示的圖像。
在原始UIView的drawRect中繪製漸變圖像。
在drawRect中繪製漸變:,但這次使用CoreGraphics'從頭創建它'。
這三個中的哪一個最快/內存密集度最低? (最快跑,不寫)
謝謝!
事情要記住:
你有小到無過的drawRect執行時多久控制,所以你不希望是這樣的方法中的內存分配做的事情。
drawRect可以在同一個運行循環中被多次調用,所以在該方法中創建自動釋放對象也不是一個好主意,因爲它們可能堆疊起來並消耗更多的內存。
如果將漸變渲染爲UIImage很方便 - 您可能需要考慮類似的東西。 UIImage * gradientImage = GetGradientImage();方法如下: //你的代碼 self.view.backgroundColor = [UIColor colorWithPatternImage:gradientImage];
您需要平衡大梯度所需的內存與重複計算和繪製所需的時間。
這適用於很多需要做小背景自定義的地方,或者您認爲需要UIImageView的地方,以便在另一個視圖上繪製背景。
託德
非常感謝! – 2009-08-23 15:54:03
創建一個圖像,然後在drawRect中繪製:會比內存密集得多,但比每次繪製漸變要快。如果應用程序受CPU限制,請使用緩存的圖像;如果應用程序內存限制,直接繪製漸變。 – rpetrich 2009-08-24 10:39:32