我有一个仅为 iPhone 开发的应用程序。当用户在 iPad 上运行它时,它没有正确显示。我知道当项目是通用的时如何检测“IS_iPAD”,但是当项目是特定于 iPhone 时,用户设备总是作为 iPhone 返回。
如何检测 iPhone 特定应用程序是否在 iPad 上运行?
我有一个仅为 iPhone 开发的应用程序。当用户在 iPad 上运行它时,它没有正确显示。我知道当项目是通用的时如何检测“IS_iPAD”,但是当项目是特定于 iPhone 时,用户设备总是作为 iPhone 返回。
如何检测 iPhone 特定应用程序是否在 iPad 上运行?
为了完成这里是@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
}
您可以使用这个不同的宏来了解您使用的是 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)
另一种选择,如果您的代码是特定于布局的(这就是我到达这里的方式):
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
}