1

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

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

4

3 回答 3

9

为了完成这里是@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
}
于 2013-10-15T08:11:09.090 回答
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)
于 2013-10-15T08:00:04.100 回答
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
}
于 2016-05-06T17:30:29.213 回答