在Xcode中将针对iPhone的应用程序转换为Universal
我有一个项目,最初打算是一个iPhone应用程序,但现在我希望它也支持iPad。我已经将项目的目标从iPhone改为Universal,但我不知道如何管理我现在需要的两个nib版本,因为已经为iPhone设计了nib。我试着根据设备的不同使用不同的NIB加载相同的ViewController,但我不允许在同一个插座上设置多个接口控件。有什么帮助吗?我有Xcode 4.4,这很简单。 对于故事板文件,只需包含在Xcode中将针对iPhone的应用程序转换为Universal,iphone,ios,xcode,ios-universal-app,Iphone,Ios,Xcode,Ios Universal App,我有一个项目,最初打算是一个iPhone应用程序,但现在我希望它也支持iPad。我已经将项目的目标从iPhone改为Universal,但我不知道如何管理我现在需要的两个nib版本,因为已经为iPhone设计了nib。我试着根据设备的不同使用不同的NIB加载相同的ViewController,但我不允许在同一个插座上设置多个接口控件。有什么帮助吗?我有Xcode 4.4,这很简单。 对于故事板文件,只需包含\u iPad和\u iPhone后缀即可。 例如,如果原始故事板名称为MyStorybo
\u iPad
和\u iPhone
后缀即可。
例如,如果原始故事板名称为MyStoryboard.storyboard
,则现在将拥有MyStoryboard\u iPad.storyboard
和MyStoryboard\u iPhone.storyboard
。还可以在项目的摘要视图下为每个设备设置情节提要文件
然后,对于.xib文件,包括~iPhone
和~iPad
后缀。
ViewController.xib
变成ViewController~iPad.xib
和ViewController~iPhone.xib
首先,您可以创建一个重复的.xib文件,并将其重命名为iPad和iPhone后缀。然后根据需要更改每个.xib的内容
至于.m代码,您可以检查设备类型并分支代码。我的方法是定义标识设备类型的宏,如下所示:
#define isDeviceIPad (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
#define isDeviceIPhone (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone)
然后我就使用这些宏(返回bool值)来编写特定于设备类型的代码(例如特定视图的位置或尺寸等)。这非常简单。
对于故事板文件,只需包含\u iPad
和\u iPhone
后缀即可。
例如,如果原始故事板名称为MyStoryboard.storyboard
,则现在将拥有MyStoryboard\u iPad.storyboard
和MyStoryboard\u iPhone.storyboard
。还可以在项目的摘要视图下为每个设备设置情节提要文件
然后,对于.xib文件,包括~iPhone
和~iPad
后缀。
ViewController.xib
变成ViewController~iPad.xib
和ViewController~iPhone.xib
首先,您可以创建一个重复的.xib文件,并将其重命名为iPad和iPhone后缀。然后根据需要更改每个.xib的内容
至于.m代码,您可以检查设备类型并分支代码。我的方法是定义标识设备类型的宏,如下所示:
#define isDeviceIPad (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
#define isDeviceIPhone (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone)
然后我只需使用这些宏(返回布尔值)来编写特定于设备类型的代码(例如特定视图的位置或尺寸等)。您只能将目标设备更改为iPhone/iPad,并且可以使用iPad的
.xib
文件:
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
//For navigate to iphone view
}
else{
//For navigate to ipad view
}
您只能将目标设备更改为iPhone/iPad,并且可以使用iPad的
.xib
文件:
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
//For navigate to iphone view
}
else{
//For navigate to ipad view
}
在每个文件中添加1个针对iPad的XiB,在导航过程中,使用上面显示的代码检查设备类型后选择XiB在每个文件和导航过程中添加1个针对iPad的XiB,在使用上面显示的代码检查设备类型后选择Xib您所说的
Im不允许将多个接口控件设置到同一个插座是什么意思
?在.h中声明的IBOutlet只能链接一次…您所说的Im不允许将多个接口控件设置到同一个插座是什么意思outlets
?在.h中声明的IBOutlet只能链接一次…谢谢!如果我还需要对ViewController的.m文件应用一些更改,该怎么办?我还要加上iPhone/iPad后缀?不客气。.m文件是单个文件,不随设备类型而变化。我已经编辑了我的答案,以根据设备类型改变.m代码的执行。希望有帮助。谢谢!如果我还需要对ViewController的.m文件应用一些更改,该怎么办?我还要加上iPhone/iPad后缀?不客气。.m文件是单个文件,不随设备类型而变化。我已经编辑了我的答案,以根据设备类型改变.m代码的执行。希望有帮助。