2010-06-02 77 views
2

我有一個想要使環球應用程序可用的iPad應用程序,但這看起來非常困難。我已經改變了事物,以便支持這兩種構建,但是在構建時,我會遇到很多關於使用UIPopOvers的錯誤。這裏是我的問題:使iPad應用程序成爲通用應用程序

  • 爲什麼UI_USER_INTERFACE_IDIOM()不能在3.1.3上編譯或註冊?
  • 我可以在基於UI_USER_INTERFACE_IDIOM()的類定義中有條件地具有變量嗎?
  • 如果不是,我應該製作兩個不同的視圖控制器嗎?

謝謝!

回答

3

爲什麼UI_USER_INTERFACE_IDIOM()不是 在3.1.3上編譯或註冊?

UI_USER_INTERFACE_IDIOM宏只適用於從3.2開始。 UIDeviceuserInterfaceIdiom財產的相同限制。這意味着您只能從SDK 3.2開始獲得通用應用程序。

我可以有條件地有基於 UI_USER_INTERFACE_IDIOM在 類定義變量()?

編號UI_USER_INTERFACE_IDIOM宏只是一個運行時快捷鍵來獲取設備的當前UI習慣用法。

如果不是,我應該製造兩個不同的 視圖控制器嗎?

如果有兩個裝置之間非常不同的UI,這是明智使用UI_USER_INTERFACE_IDIOM宏使用兩個不同的視圖控制器,並在運行時創建正確的(在例如應用控制器)。

+0

那麼,如果我想要一個通用應用程序,我是否爲3.2構建?我不明白,沒有iPhones或iPod觸摸可以運行3.2,所以我根本不能使用'UI_USER_INTERFACE_IDIOM()'。我應該爲3.2構建,並使用兩個手臂構建設置?如何在不運行3.2的設備上測試,如iPhone? 我似乎無法讓事情在3.1.3上編譯,因爲在該版本下UIPopoverController不被識別。 – 2010-06-02 07:08:31

+0

是的,通用應用程序只能從3.2開始使用。目前,沒有股票iPhone運行SDK 3.2,但iPad做。 因此,開發通用應用程序意味着將基礎SDK設置爲3.2並將目標SDK設置爲3.1+。然後你必須執行運行時檢查以檢查是否有3.2類或函數可用。 我建議您閱讀描述如何製作通用應用的iPad編程指南(http://developer.apple.com/iphone/library/documentation/General/Conceptual/iPadProgrammingGuide/StartingYourProject/StartingYourProject.html)。 – 2010-06-02 07:44:05

+0

是的,你必須使用SDK 3.2編譯'UI_USER_INTERFACE_IDIOM()',但它在3.1和之前的版本。 – user102008 2011-03-12 00:39:23

2

我只是選擇了目標,然後進入項目 - >升級當前目標爲iPad運氣相當不錯。

我的應用程序是非常簡單的,包括大部分表視圖和網頁視圖,但它是值得做一個備份,並試圖...

是的,你必須將其提交爲3.2的應用程序,可以針對3.1。 *

還有很多其他的東西,你必須做的: 確保它可以在任何方向查看(第一次被拒絕)。 確保您已經創建了所有新圖像。你必須有3或4個圖標,而不僅僅是一個像iPhone應用程序所需的圖標。 (iPad圖標,iPhone圖標,聚光燈小圖標等)。 當然還有iPad大小的商店截圖。

我用來測試它是iPad還是iPhone的一個非常好的方法是檢查設備是否可以使用分屏視圖控制器,因爲對於可預見的未來,沒有像iPhone那樣小屏幕的設備將無法使用使用分割視圖控制器。我剛剛創建了一個功能爲我做到這一點:

+(BOOL)isIpad{ return NSClassFromString(@"UISplitViewController") != nil; } 

然後在我的應用程序的任何地方,我想顯示的東西不同,這取決於設備,我只是做了檢查吧:

int width = 150; 
if([NabAppDelegate isIpad]){ 
    width = 350; 
} else { 
    width = 150; 
} 
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5,10,width,25)]; 

這比檢查操作系統版本好很多,就像我見過的一些建議。

相關問題