Ios 通用应用程序-如何使用?
我正在使用Xcode 4.2并正在编写一个通用应用程序。在开始新项目时,我选择了SingleView应用程序模板。XCode添加了ViewController1.h、ViewController1.m、ViewController1_iphone.xib和ViewController1_iPad.xib。我需要添加更多UI并单击文件…新建…新建文件和选定的UIViewController子类模板,并看到两个复选框(针对iPad,用户界面为Xib) 我应该在这里做些什么来支持iPad和iPhone,同时拥有共享相同代码的公共.h和.m文件。我是否需要在我的视图控制器中添加代码来检查它是iPad还是iPhoneIos 通用应用程序-如何使用?,ios,xcode4.2,Ios,Xcode4.2,我正在使用Xcode 4.2并正在编写一个通用应用程序。在开始新项目时,我选择了SingleView应用程序模板。XCode添加了ViewController1.h、ViewController1.m、ViewController1_iphone.xib和ViewController1_iPad.xib。我需要添加更多UI并单击文件…新建…新建文件和选定的UIViewController子类模板,并看到两个复选框(针对iPad,用户界面为Xib) 我应该在这里做些什么来支持iPad和iPhone
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
} else {
}
此外,我还看到人们谈论~iPad和~iPhone。这是怎么回事
如果我理解正确的话,是否由于屏幕尺寸不同,我必须分别为iPad和iPhone设计UI
我完全搞糊涂了
请帮助。我建议您将.xib文件移动到故事板,一个用于iPhone,一个用于iPad。它们为开发带来了很多乐趣,并且易于学习 然后,将自定义类分配给视图控制器,并将UI元素链接到代码。如果对两个故事板都这样做,那么它们可以通过引用公共的.h/.m文件共享相同的代码
在项目设置中,一旦应用程序配置为通用开发,您将为iPhone/iPad部署信息分配适当的故事板。我建议将.xib文件移动到故事板,一个用于iPhone,一个用于iPad。它们为开发带来了很多乐趣,并且易于学习 然后,将自定义类分配给视图控制器,并将UI元素链接到代码。如果对两个故事板都这样做,那么它们可以通过引用公共的.h/.m文件共享相同的代码
在项目设置中,一旦应用程序配置为通用开发,您就可以为iPhone/iPad部署信息分配适当的故事板。如何实现和构建东西或多或少取决于您,但我倾向于采用以下想法:
- 忽略“iPad目标”和“带Xib”选项(除非不使用故事板。见下文)
- 创建包含所有共享代码的父视图控制器。例如,主视图控制器
- 为iPad和iPhone创建2个子类。例如,MainViewController_iPhone和MainViewController_iPad(您可以使用您提到的MainViewController~iPhone。这里只是命名偏好的问题)
- 您希望在iPhone和iPad之间共享的任何代码,都要保留在MainViewController父类中,并且每个设备特定的任何代码都要放在相应的子类中
MainViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainViewControllerIdentifier"];
请注意,标识符是在情节提要中指定的
希望这有点帮助,但如果你有更多的问题,请直接提问:)这或多或少取决于你如何选择实施和构建,但我倾向于采用以下想法:
- 忽略“iPad目标”和“带Xib”选项(除非不使用故事板。见下文)
- 创建包含所有共享代码的父视图控制器。例如,主视图控制器
- 为iPad和iPhone创建2个子类。例如,MainViewController_iPhone和MainViewController_iPad(您可以使用您提到的MainViewController~iPhone。这里只是命名偏好的问题)
- 您希望在iPhone和iPad之间共享的任何代码,都要保留在MainViewController父类中,并且每个设备特定的任何代码都要放在相应的子类中
NSString *path = [[NSBundle mainBundle] pathForResource:@"setup" ofType:@"plist"];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
storyboard = [UIStoryboard storyboardWithName:@"ViewController1_iphone" bundle:nil];
}
else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
storyboard = [UIStoryboard storyboardWithName:@"ViewController1_ipad" bundle:nil];
}