2011-02-03 37 views
3

我打算實施一個類似於iphone的相冊組件。我想使用uviews會使組件有一個不良的表現,我的意思是滾動緩慢,所有的東西......所以我應該採取哪種方式? 在性能方面,CALayer比UIViews更好嗎?有沒有其他(更輕)的方式 繪製圖像或文本,而不使用UIView子類?這是在Objective C中繪製圖像和文本的最輕的方法嗎?

任何鏈接或想法將是偉大的,

謝謝你!

回答

2

有很多關於圖形的教程和UIView vs繪圖的利弊。我不是專家,但我懷疑性能更可能來自您的實例化和緩存策略。即如果你想快速滾動然後看最小化實例化對象的數量,緩存和重用那些是加載數據和有效的塊加載例程將會產生很大的好處。

但是我傾向於首先做一個簡單的概念驗證應用程序,將其加載到設備上,並查看它的運行速度以及最可能需要解決性能問題的位置。除了緩存和重用組件等標準設計策略之外,嘗試在確定性能瓶頸發生的位置之前優化性能通常不是一個好主意。

0

如果您只是重新創建現有的系統實現,請首先使用系統的實現並查看具體問題。

如果你有一些非常專業的或不容易用UIView實現的東西,請查看CoreGraphics.framework和CoreText.framework。

高級庫中的大部分繪圖和動畫都使用CoreGraphics技術。但是,它們通常是簡化或更高級別的,可能包含特定的抽象成本。 cg渲染不適用於新手 - 如果您不瞭解UIKit/AppKit渲染,您很可能會失去很多時間學習它,並且它不一定會改進UIKit/AppKit實現。如果你對UIView/NSView和圖形非常舒服,那麼你的定製繪圖就有很多好處。

(我假設你不打算OpenGL的層與此)

它可能不是「猜測,使用uiviews將使組件有一個糟糕表現」是個好主意。如果實施已經存在,請相信Apple花了一些時間優化它 ​​- 您將有一些時間進行投資,並在開發針對您需求的改進過程中獲取潛在知識。我建議你從你已經熟悉的東西開始,然後確定是否需要改進 - 你甚至可以在UIView/NSView中使用CG渲染,所以你不一定需要重新創建UIView的替代品。因爲你沒有在OP中提到CoreGraphics,我猜你對它並不是很熟悉。

祝你好運

相關問題