2011-05-18 169 views
1

我有一個通用應用程序,可以根據用戶擁有的設備更改屏幕布局。 它似乎工作得很好,但我有一個用戶呼叫(併發送給我屏幕截圖)他的iPhone 4顯示他的iPad視圖,而不是iPhone視圖。我無法在我們周圍的任何手機上覆制它,但我想知道是否有更好的方法來做到這一點,因爲iOS 4.3已經出來。檢測isIpad是否更好的方法?

+(BOOL)isIpad{ 
    return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad); 
} 

另外,是否有一種方法來檢測屏幕尺寸?我主要使用它來確定表格中的元素應該是多寬,但是如果Apple推出帶有視網膜顯示器的iPad 3,那麼讓應用程序恰當地調整所有內容是非常好的。
如果應用是縱向或橫向的,也非常有用。使它像錨點一樣在WPF中的元素邊緣。

回答

3

當加載XIBs一個通用的應用程序這一點,或者是什麼你已經在做,似乎是唯一的出路:

NSString *xibName = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)[email protected]"SomeView~iPad":@"SomeView"; 

至於屏幕尺寸這應該工作:

CGRect screenSize = [[UIScreen mainScreen] bounds]; 
+0

我給了UI_USER_INTERFACE_IDIOM()方法一試。無論如何,我必須做一個更新,所以它可以解決問題。另外,一旦用戶得到更新,我會知道他是目前的版本。 – AndyD273 2011-05-18 15:53:37

+0

[''[[UIScreen mainScreen] bounds]'缺少';'我試圖在那裏編輯它,但是現在Stackoverflow堅持編輯必須至少有六個字符。上次我浪費時間去編輯一些東西。 – mxcl 2011-09-13 12:36:14

+0

@MaxHowell修正了編輯...看起來您需要更多的聲望才能編輯少於六個字符的帖子。 – Macmade 2012-10-02 21:13:09

0

可能它有一個以前版本的應用程序,並與新的衝突!

嘗試刪除舊的並重新安裝新的!有用!我已經遇到過這個問題。

1

這就像一個年齡超過百歲的人,但在谷歌中遇到過,所以我想我會發佈一個記錄不完整但非常有用的功能。如果將ipad添加到iPad特定筆尖的文件名末尾,它會自動加載該文件。與@ 2x相同的邏輯用於加載圖像。因此,您的iPhone筆尖將被命名爲myview.xib,並且您的ipad myview〜ipad.xib和iOS將在需要時正確加載ipad版本。花式!

1

UIUserInterfaceIdiomPad現在已棄用。新的方法是使用TraitCollections。它只能在視圖上調用。

-(BOOL) isiPad{ 
    return self.view.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassRegular && self.view.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassRegular; 
} 

參考蘋果文檔here

+1

感謝您的更新。保持最新信息是很好的,我還沒有看到有關TraitCollections方法的文檔。 – AndyD273 2016-04-01 17:59:50

+0

這不適用於iPad mini – 2016-08-02 00:30:45

相關問題