【问题标题】:Coverting an iPhone targeted app to Universal in Xcode在 Xcode 中将 iPhone 目标应用程序转换为 Universal
【发布时间】:2013-10-21 14:47:25
【问题描述】:

我有一个最初打算成为 iPhone 应用程序的项目,但现在我希望它也支持 iPad。我已将项目的目标从 iPhone 更改为 Universal,但我不知道如何管理我现在需要的两个 nib 版本,已经拥有专为 iPhone 设计的 nib。我尝试根据设备加载具有不同笔尖的相同视图控制器,但我不允许将多个界面控件设置到相同的插座。有什么帮助吗?我有 Xcode 4.4

【问题讨论】:

  • 这个Im not allowed to set more than one interface control to the same outlets是什么意思?
  • .h中声明的IBOutlet只能链接一次...

标签: iphone ios xcode ios-universal-app


【解决方案1】:

这很容易。 对于您的故事板文件,只需包含 _iPad_iPhone 后缀即可。 例如,如果原始情节提要名称为 MyStoryboard.storyboard,那么您现在将拥有 MyStoryboard_iPad.storyboardMyStoryboard_iPhone.storyboard。您还可以在项目的摘要视图下为每个设备设置故事板文件。

然后,对于 .xib 文件,包括 ~iPhone~iPad 后缀。 ViewController.xib 变为 ViewController~iPad.xibViewController~iPhone.xib

首先,如果您现有的 .xib 文件,您可以创建一个副本并将它们重命名为具有 iPad 和 iPhone 后缀。然后根据需要更改每个 .xib 的内容。

至于 .m 代码,您可以检查设备类型并分支您的代码。我的方法是定义识别设备类型的宏,如下所示:

#define isDeviceIPad (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
#define isDeviceIPhone (UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone)

然后我只使用这些宏(返回布尔值)来编写特定于设备类型的代码(例如特定视图的位置或尺寸等)。

【讨论】:

  • 谢谢!如果我还需要对 ViewController 的 .m 文件进行一些更改怎么办?我还要添加 iPhone/iPad 后缀?
  • 不客气。 .m 文件是单个文件,不会因设备类型而异。我已经编辑了我的答案,以根据设备类型改变 .m 代码执行。希望对您有所帮助。
【解决方案2】:

您只能将目标设备更改为iPhone / iPad,您可以使用iPad的.xib文件:

  if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
    //For navigate to iphone view 
}
else{
     //For navigate to ipad view
}

Reference

【讨论】:

    【解决方案3】:

    为每个文件添加 1 个针对 iPad 的 XiB,在导航期间,使用上面显示的代码检查设备类型后选择 Xib

    【讨论】:

      猜你喜欢
      • 2011-11-04
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多