这是创建通用iOS应用程序的正确方法吗? Xcode 4 - 似乎工作?

时间:2011-09-06 23:07:40

标签: xcode xib nib universal

以下是我如何通过使用复制创建~ipad.xib,然后将它们添加回项目的备份并检查通用,从现有iPhone项目制作通用应用程序。

我使用xcode 4.02,基本sdk为4.3.3,部署目标为3.1.2。

  1. 在某个地方备份整个项目。
  2. 右键单击iPhone目标并选择复制。为iPad选择复制而不是仅复制。这使得一个名为Resources-iPad的新文件夹具有一个名为classes的子文件夹,其下是整个项目中所有xib文件的副本。 (有趣的是,当我在finder中查看这些文件时,虽然它们在xcode窗口中显示了扩展名,但它们没有.xib扩展名 - 为什么?Finder仍然说它们仍然是xib文件。)
  3. 此时我有两个目标。这似乎是错的,所以我去查找并制作了新的Resources-iPad文件夹的备份副本,然后删除了整个项目。
  4. 复制我在步骤1中备份的原始iPhone项目。
  5. 添加了已备份的Resources-iPad文件夹,并对其进行了编辑,使其看起来非常适合iPad。
  6. 我现在有一个目标似乎很好,我在目标摘要中将它设为通用设备而不是iPhone。
  7. 但是,在部署到模拟器或设备时,我的行为不一致 - 有时会出于错误的原因使用错误的xib。
  8. 修复了它 - 在xcode中,在Resources-iPad / classes文件夹中将ipad的所有xib从mynibname.xib重命名为mynibname~ipad.xib(前面的tilda和全部小写)
  9. 我找不到任何关于这样做是否可行的文档。到目前为止,它适用于这些物理设备:

    带有4.3的iPad 2,带有3.1.2的iPod touch v1,带有4.1的iPod touch v4(视网膜)

    这是创建通用应用的正确方法吗?现在我已经解决了这个问题似乎已经很容易了,但是我已经永远找到了这个信息。哦,我也没有一个mainwindow.xib,但其他的nibs在tabbar应用程序中作为tableview部分标题和详细视图加载到其他地方 - 所以我将主界面部分留空了。

    哦 - 我没有iPad 1并且无法在该设备上进行测试,但它似乎无法在iPad 3.2模拟器中正常工作,但所有其他设备和模拟器似乎都能正常工作。

1 个答案:

答案 0 :(得分:2)

我看到很多人所做的是为每个设备使用2个单独的类。为什么?不能告诉你!

我所做的是为iPad和iPhone使用1类,只使用宏来确定当前设备是什么:

例如

#define IDIOM           UI_USER_INTERFACE_IDIOM()
#define IPAD            UIUserInterfaceIdiomPad   

if (IDIOM == IPAD)
{
    /* do something specific for iPad. */
} else {
    /* do something specific for iPhone, like set up frames. */
}

当然,您需要创建接口的iPad版本,但这很容易。

至于将其标识为通用应用程序,您的项目设置中有一个选项,以及构建设置中的目标设备系列,您将确保设置为 iPhone / ipad公司

这就是我制作通用应用程序所做的全部工作,而且为每个设备编写特定的类的时间要少得多!