2013-05-27 46 views
1

我正在開發一個應用程序,其中作爲客戶端的要求,幾乎所有的視圖都僅適用於iPhone 4設備,其他視圖與iPhone 4,5/iPad兼容。那麼是否有可能在單一構建?是否可以創建應用程序,只有半部分兼容iphone而其他部分是通用的?

我知道這是不可能的,但我希望你的建議相同。 如果您有任何相關的鏈接,請與我分享。

+1

我該如何給你的代碼?我只是想知道,在我的應用程序中有多個XIB和少數僅用於iPhone,而其他用於通用(iPhone/iPad),問題是在ipad中,我必須在幾種情況下調用iphone xib,並且它必須顯示在iPad屏幕中間。所以這是可能的,這種類型的應用程序是有效的蘋果? – Apple

回答

1

只是通過代碼來決定這一點。如果一個視圖應該可用於iPhone,請調用它,如果不是這樣的話。區分iPhone和iPad只是使用

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
     // iPad 
    else if([[UIScreen mainScreen] bounds].size.height == 568) 
    { 
     // iPhone retina 4 (iPhone 5) 
    }else 
     // Older iPhones 
7

是的,iPhone 3.5「,iPhone 4」和iPad可能有不同的視圖。另外,您可以在每個不同的設備中實現不同的功能。但是,iOS User Interface Guidelines建議您在不同設備上提供相同的功能。

保留您的應用程序的主要功能,而不管設備的運行上。儘管一個版本可能比另一個版本提供更深入或交互式的任務演示,但避免讓用戶感覺他們在兩個完全不同的應用程序之間進行選擇非常重要。

在實踐中,程序可以用這個宏寫分叉建(編程)一個觀點:

#define isIpad() \ 
([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] && \ 
[[UIDevice currentDevice] userInterfaceIdiom]==UIUserInterfaceIdiomPad) 

#define isWidescreen (fabs((double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568)<DBL_EPSILON) 
#define isIphone ([ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone" ]) 
#define isIpod ([ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPod touch" ]) 
#define isIphone5 (isIphone && isWidescreen) 

此外,你可以爲每個不同的設備創建不同的廈門國際銀行文件,使用分叉和UIViewController消息:- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil,加載正確的文件。

最後,您可以在xib文件名中使用修飾符來加載iphone和ipad之間的不同資源。例如:您的iPad UI具有FirstViewController.xib;你可以創建一個FirstViewController〜iphone.xib,如果設備是一個iPhone(而不是FirstViewController.xib),它將被iOS自動加載。您可以檢查this答案以獲得關於此主題的更多信息。

編輯

在你已經「iPhone只XIB文件」和你想運行的iPad上,你應該考慮複製的每個這些文件,並轉換副本iPad的目標的情況下如thisthis解答。然後,您可以重命名以「〜ipad.xib」結尾的副本,這應該可以解決您的問題,但是,此視圖需要佈局版本。

+0

hello luis,感謝您的回覆,但我的問題是,在我的應用程序中有幾個xib只適用於iphone 4,而且很少有通用的,所以如何在ipad中顯示那些iphone 4 xib? – Apple

+0

我編輯了答案,祝你好運! – LuisEspinoza

+0

hello luis,我不想爲ipad創建新的xib,我只想在ipad上顯示iphone xib在屏幕中間。目前在我的應用程序中,它顯示在iPad屏幕的最左邊角落。那麼解決方案是什麼? – Apple

相關問題