2013-10-15 63 views
1

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

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

+0

如果我的理解对不对你的问题这应该有所帮助:http://stackoverflow.com/questions/4465832/how-to-detect-my-iphone-app-is-being-run-on-an-ipad/14864400#14864400 – Hitman

+0

帮助!它回答了我的问题...谢谢 – BhushanVU

回答

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) 
8

完成的缘故这里是@MichaelPatzer答案通过@ user42949

指出如果应用程序是在iPad上以模拟器模式运行的iPhone应用程序,则它将具有手机的userInterfaceIdiom,但是是iPad的模型类型。 您可以用下面的代码检查:

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

接受您自己的答案@Shebuka – Vinodh

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 
} 
相关问题