我的iPhone開發正在加緊一個階段,我在看用戶界面。我們正在考慮擁有一些漂亮的界面功能,比如從圖庫列表或其他類似的圖像拖放圖像。豐富的iPhone界面庫組件?
基本的iPhone界面有多遠?大多數人是否創建了自己的接口和代碼,如果有的話,那裏的基礎是什麼? CoreGraphics中? OpenGL的?
我不想重新發明輪子,但如果有人已經完成了這項工作,我也不想採取過於複雜的選擇。
我的iPhone開發正在加緊一個階段,我在看用戶界面。我們正在考慮擁有一些漂亮的界面功能,比如從圖庫列表或其他類似的圖像拖放圖像。豐富的iPhone界面庫組件?
基本的iPhone界面有多遠?大多數人是否創建了自己的接口和代碼,如果有的話,那裏的基礎是什麼? CoreGraphics中? OpenGL的?
我不想重新發明輪子,但如果有人已經完成了這項工作,我也不想採取過於複雜的選擇。
有幾層可可基於接口。通常,我建議您在最高級別的抽象級別工作,以滿足您對演示和性能的需求。
您可以使用Interface Builder或代碼放置的基本UIKit元素旨在處理應用程序界面中最常見的情況。這些提供了一定程度的自定義,取決於它們的類型,但是你看到的通常是你所能得到的。在iPhone上,蘋果公司甚至試圖通過在審覈期間拒絕應用程序,以與人機界面指南相矛盾的方式來保留這些庫存元素的某些外觀和感覺。
下一級是自定義的UIViews。通過在-drawRect:
方法中使用Quartz繪圖,可以使它們看起來像任何東西。您可以通過重寫–touchesBegan:withEvent:
等方法或使用新的UIGestureRecognizers來完成自己的觸摸操作。鑑於您可以在這裏完成的自定義級別,這是大多數人在調整界面時停止的地方。
通過使用Core Animation圖層和動畫,您可以比此低一些。通過在iPhone上使用CALayers而不是UIViews,你不會獲得很多性能優勢,但如果要製作在Mac和iPhone上使用相同代碼的可視項目,它們可能很有用。如果您想做更多的事情而不是線性地在兩個狀態之間對視圖進行動畫製作,可能需要定製動畫。您甚至可以使用Core Animation進行一些有限的3D工作。
最後,還有OpenGL ES用於顯示完整的3-D場景和真正的高性能圖形顯示。這與處理iPhone顯示系統時所獲得的金屬非常接近,並且顯示了您必須編寫的代碼的數量和複雜性。對於複雜的3-D工作,這是你需要使用的,但是對於2-D甚至是基本的3-D,我建議先看看Core Animation,因爲它可以爲你節省代碼。如果性能不可接受,那麼你應該去OpenGL ES。
現在,僅僅因爲您需要使用其中一種技術來處理部分界面,並不意味着它不能與其他界面共存。 UIView由核心動畫層支持,甚至OpenGL ES渲染成可放置在視圖中的CALayer。再次,使用適用於該界面部分的最高抽象級別。
真棒和詳細。非常感謝。 – mtrc 2010-07-23 09:59:33