2011-08-08 44 views
9

因此,我只寫了一個絕對精湛,設計完美的iPhone應用程序,它將會變得如此豐富,我會在浮船和泳裝模型和直升機中氾濫。我想通過將其轉換爲適用於iPad和iPhone的通用應用程序來賺取更多現金。設計通用應用程序(iPad/iPhone)的好習慣

現在我正在做這件事,併成爲我的懶惰程序員,試圖最大限度地重用我已經編寫的代碼,我發現我可以重用大部分代碼 - 當然,所有的模型 - - 但總是有一些小東西需要在控制器類上修改。或者,在UI_USER_INTERFACE_IDIOM()上經常進行檢查,這對我來說似乎是一種代碼味道。

與此同時,我認爲ipad版本不應該是iPhone版本的大。對於大多數情況來說,不同的用戶界面肯定是有保證的,但是會出現重複使用對話框的位置或整個視圖層次結構。

所以,我問社區。有什麼好的做法可以通過最小的調整來確保我的應用程序具有通用性?

回答

5

假設你隨後MVC模式,中號明顯的iPhone和iPad之間(和大部分M⇔C關係的太)共享。

不同的UI意味着不同V和不同V⇔C

幾個想法:

  • 如果你到Interface Builder中,使用1個筆尖爲iPhone用戶界面,另一個用於iPad的。

  • 對視圖'有很好的理解,可以自動修復面膜。有了正確的值,你通常會擺脫很大一部分視圖佈局代碼。

  • 儘可能地不要在手動定位視圖或繪製自定義視圖時使用絕對值。例如,myView.frame = CGRectMake(0,0, 320, 480)可能在iPad上表現不佳。

  • 如果您有至少3.2的iOS,後綴特定設備資源~ipad~iphone發展目標。你將能夠使用它們的通用名稱來獲取它們。


隨着AwesomeView~ipad.xibAwesomeView~iphone.xib,你可以寫[[AwesomeViewController alloc] initWithNibName:@"AwesomeView" bundle:nil]
的圖像同樣的事情(foo~ipad.pngfoo~iphone.png,然後[UIImage imageName:@"foo"]

我敢肯定,大多數這些點是顯而易見的,但他們一直很省時的我。

2

我發現的是,我最終得到了針對同一款應用iPhone和iPad的顯着不同的用戶界面。屏幕房地產和其他方面的差異真的需要不同的方法。如果沒有其他的事情,我最終會得到比iPhone更少的獨立視圖(屏幕)。 (順便說一句,我喜歡在直升機上騎車)。

+1

這就是我所害怕的:一個通用應用程序實際上是兩個應用程序被塞入一個應用程序,只有它們之間的模型,這成爲維護的噩夢。 – ageektrapped