在iPAD上检测iPhone特定应用程序“正在运行”

时间:2013-10-15 07:28:51

标签: ios objective-c ipad emulation

我有一个仅为iPhone开发的应用程序。当用户在iPAD上运行它时 它没有正确显示。我知道当项目是通用的时候如何检测“IS_iPAD”但是 当项目是iPhone特定时,USER DEVICE总是作为iPhone返回。

如何检测iPhone特定应用程序是否在iPAD上运行?

3 个答案:

答案 0 :(得分:8)

为了完成,这里是@ user42949指出的@MichaelPatzer答案

  

如果该应用是在iPad上以模拟器模式运行的iPhone应用,   它将具有Phone的userInterfaceIdiom,但是具有iPad的型号类型。   您可以使用以下代码进行检查:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone &&
    [[[UIDevice currentDevice] model] hasPrefix:@"iPad"]) {
    // This app is an iPhone app running on an iPad
}

答案 1 :(得分:0)

您可以使用此不同的宏来了解您使用的是iPhone,iPhone 5还是iPad:

#define IS_IPHONE()     (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_IPAD()       (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE5()    ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) && [UIScreen mainScreen].bounds.size.height == 568)

答案 2 :(得分:0)

另一个选择,如果你的代码是特定于布局的(我就是这样的):

CGSize screenSize = [UIScreen mainScreen].bounds.size;
CGFloat screenRatio = MIN(screenSize.width / screenSize.height, screenSize.height / screenSize.width); // account for rotation
if(screenRatio > 6.65 && screenRatio < 6.67) {
    // iPad is 6.66666
}