我正在爲iphone和ipad編寫通用應用程序。我如何確定設備是否是iPad。我已使用此鏈接來確定iPhone類型(3G,3GS)。確定ipad設備
Determine device (iPhone, iPod Touch) with iPhone SDK
我正在爲iphone和ipad編寫通用應用程序。我如何確定設備是否是iPad。我已使用此鏈接來確定iPhone類型(3G,3GS)。確定ipad設備
Determine device (iPhone, iPod Touch) with iPhone SDK
布拉德的解決方案是絕對正確的。如果您正在構建一款通用應用程序,該應用程序可以在具有較早版本的操作系統的iPhone上運行,還可以使用最新版本的iPads和iPhone,但您可能需要添加此代碼以捕捉未定義慣用語的情況。
// If iPhoneOS is 3.2 or greater then __IPHONE_3_2 will be defined
#ifndef __IPHONE_3_2
typedef enum {
UIUserInterfaceIdiomPhone, // iPhone and iPod touch
UIUserInterfaceIdiomPad, // iPad
} UIUserInterfaceIdiom;
#define UI_USER_INTERFACE_IDIOM() UIUserInterfaceIdiomPhone
#endif // ifndef __IPHONE_3_2
強烈建議不要用於確定是否該應用程序在iPad運行做設備類型檢測,但是您檢查任一特徵或用戶接口成語。當新硬件出來時(這往往是相當頻繁的),許多隻針對特定設備類型進行測試的應用程序會中斷。
通常,如果您需要確定應用程序是否在iPad上運行,那是因爲您需要調整用戶界面以匹配設備的較大顯示區域。爲此,Apple建議您使用以下代碼檢查用戶界面習語:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
// iPad-specific interface here
}
else
{
// iPhone and iPod touch interface here
}
其他返回值將是UIUserInterfaceIdiomPhone。 – arlomedia 2012-05-15 16:29:56
這裏是最好的回答我:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
//iPhone methods
}
else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
//iPad methods
}
我會推薦這個布拉德的代碼只有其他循環。難怪明天蘋果是否會推出與iPhone不同的新屏幕尺寸。 – 2014-01-23 01:44:41
if ([(NSString*)[UIDevice currentDevice].model isEqualToString:@"iPad"]) {
NSLog(@"...in iPad");
} else {
NSLog(@"...in iPhone/iPod");
}
試試這個
if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
{
// etc.
}
else
{
//iphone
}
只有當應用程序使用較舊的SDK構建時,才需要這樣做。如果您正在構建3.2+並定位3.x,則不需要額外的代碼。看到蘋果如何要求你使用4.0 SDK來構建應用程序商店,你不應該需要這個代碼。 – 2010-07-08 16:03:16
在較早的操作系統設備上,該函數僅計算爲0,這會導致相等語句正常工作,就像檢測到非iPad設備一樣。因此,即使在較早的操作系統上,它也能按預期工作。 – 2010-07-08 16:05:15
謝謝。這有助於。我在我的iMAC上安裝了SDK 4,但我的iPhone仍然有3.1.2。所以這將是重要的。我沒有iPAD(應用程序使用iPhone的相機和iPAD的照片庫)。我可以從某個地方「租賃」iPAD,因爲我不想在沒有在真實設備上測試的情況下發布該應用。 – 2010-07-09 09:52:53