Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-用于检测情节提要的iPad/iPhone设备的逻辑_Ios_Iphone_Objective C_Ipad - Fatal编程技术网

iOS-用于检测情节提要的iPad/iPhone设备的逻辑

iOS-用于检测情节提要的iPad/iPhone设备的逻辑,ios,iphone,objective-c,ipad,Ios,Iphone,Objective C,Ipad,我需要在我的应用程序代理文件中将情节提要定义为身份验证脚本的一部分,该脚本用于将相关数据传递给特定视图 一切都很好——但通过这样定义我的故事板,我覆盖了所有设备(iPad或iPhone)的路径,我希望我的应用程序是通用的,并根据设备的不同遵循不同的故事板-因此,理想情况下,我希望检测设备并将相关的故事板ID应用于变量,以便正确的故事板运行,验证脚本仍能正常工作-但我不确定如何做到这一点 这是我到目前为止的代码- UIStoryboard *mainStoryboard = [UIStorybo

我需要在我的应用程序代理文件中将情节提要定义为身份验证脚本的一部分,该脚本用于将相关数据传递给特定视图

一切都很好——但通过这样定义我的故事板,我覆盖了所有设备(iPad或iPhone)的路径,我希望我的应用程序是通用的,并根据设备的不同遵循不同的故事板-因此,理想情况下,我希望检测设备并将相关的故事板ID应用于变量,以便正确的故事板运行,验证脚本仍能正常工作-但我不确定如何做到这一点

这是我到目前为止的代码-

 UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"ipad_story" bundle:nil];
 UIViewController *controller;
 UINavigationController *navigationController;

情节提要能否包含检测设备的逻辑,并应用ipad故事或ipad电话?

有两个选项,使用,
~ipad
,因此iphone将有类似于
main\u故事的故事,ipad将有类似于
main\u故事的故事

#define IS_IPHONE_5 (CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size, CGSizeMake(640, 1136)))

UIViewController *homeViewController;
if (IS_IPHONE_5) {

} else {

}
或者,如果需要在代码中检测,请查看:


如果可能,应使用第一个选项,第二个op选项仅在必须使用代码时才需要。

要检测iPad/iPhone:

if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
    {
        UIStoryboard *storyboard =  [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];

    } else {
        UIStoryboard *storyboard =  [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
    }

您需要在init上加载正确的NIB,而不是viewDidLoad

- (id)init

    if(thisDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad)
    {
        return [self initWithNibName:@"ViewControllerIpad" bundle:nil];
    }
    else if ([[UIScreen mainScreen] bounds].size.height == 568)
    {
        return [self initWithNibName:@"ViewControllerIphone5" bundle:nil];
    } 
    else 
    {
        return [self initWithNibName:@"ViewController" bundle:nil];
    }
}
使用此宏

#define IS_IPAD     ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)

如果您正在寻找快速解决方案:

if(UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad) {
   //iPad
}
else {
   //iPhone
}

}

您应该在文件
~ipad
~iphone
上使用设备修改器。Cheers@rckoenes-这可以工作,但在iphone5上显示,就好像受限于iphone4的比例一样。您可以通过正确设置自动布局或使用自动调整大小掩码来解决这个问题。我从未为3.5英寸和4英寸的设备设计过特定的用户界面。只需将屏幕调整到屏幕大小即可。足够公平-为帮助和最全面的答案干杯!
#define IS_IPAD     ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
if(UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad) {
   //iPad
}
else {
   //iPhone
}
if ([[UIDevice currentDevice] userInterfaceIdiom] ==UIUserInterfaceIdiomPad) {

  UIStoryboard *storyboard = 
    [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
} else {
    [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];