如何将iPhone应用移植到iPad(故事板)

9

我刚刚完成了我的iPhone应用程序,现在希望将其制作成通用应用。我已经阅读了一些相关的文章,但它们都有点陈旧(大约是2010年左右)。

我的项目如下:

  • 这是一个简单的iPhone应用程序,最近创建的(iOS 5 - Storyboard),有三个屏幕。
  • 我的应用程序代表一个带有三张卡片的表格,用户可以通过点击翻转卡片,并可以在第二个屏幕上输入文本来显示在卡片上。
  • 在创建项目时,我勾选了“通用”,所以有两个Storyboard。除此之外,我所做的其他事情都与iPad无关。(除了在我的“联系支持”电子邮件选项中使用了UIModalPresentationPageSheet的一行代码)

我想要实现的目标:

  • 在iPad上运行相同的应用程序:我的应用程序非常简单,没有任何需要分割视图或详细信息的用途。我只想要相同的对象和布局,但是具有更大和更好的图形(表格、卡片等)。

我喜欢这个想法,因为它可以作为一个很好的入门级迁移。

我不知道该从哪里开始。当我运行iPad模拟器时,只出现一个白屏。


嗯...编辑iPad故事板是一个不错的开始。 - esqew
那么针对你的iPad版本,你需要重新制作整个故事板并重复使用代码吗?再次添加按钮、标签和每个UI元素,并将它们与当前方法连接起来? - Juan González
是的,iPhone和iPad平台非常逼真。除了一些例外情况,你应该能够毫无问题地完成这个任务。 - esqew
1
在我的情况下,将UIButtons连接到新的Storyboard所需的唯一事项是添加“IBOutlet”声明。 - Juan González
2
将iPhone的Storyboard转换为iPad - 相关讨论 - sridevi
显示剩余2条评论
3个回答

12

好的,这部分工作已经完成。

就像几乎所有事情一样,一旦你知道该怎么做,这就很容易了。

我想对于那些像我这样的情况,其中UI除了大小或(x,y)坐标以外没有改变的情况,可以总结为:

  1. 在iPad Storyboard上复制每个UI元素(复制和粘贴即可),然后根据需要调整位置和大小
  2. 重新连接每个按钮、跳转等(你还需要再次添加跳转名称)
  3. 验证你的UI受到影响的每个位置(例如x,y坐标),确定应用程序是否正在iPhone或iPad上运行,然后相应地分配代码
  4. 如果应用中有任何本地化,则必须更新iPad Storyboard上的新UI元素
  5. 选择模拟器的测试目标并尝试它

为了确定应用程序在哪个设备上运行,您可以使用以下方法:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    //I'm running on the iPad
} else {
    //I'm running on the iPhone
}

就是这样了。在像我这样简单的情况下,代码的重复使用率是绝对的(100%),您需要添加的新代码很少(基本上是需要IF语句的地方),UI元素的复制也很容易,只需复制和粘贴即可。

我希望这对其他人有用,如果您有改进建议,欢迎提出。


2
这肯定不是解决这个问题的最佳方法吧?可能会引入错误/错过更新UI元素,命名错误等等,看起来风险很大。:( - jmc
请查看此答案 https://dev59.com/EWoy5IYBdhLWcg3wkO6g (这是该问题的评论之一,但太深了,所以被隐藏了) - jmc

4
打开Finder中的Storyboard文件,复制您的iPhone-Storyboard并将其重命名为Main-iPad.storyboard。
在xCode中,右键单击Storyboard->“打开为”->“源代码”。
搜索targetRuntime =“iOS.CocoaTouch”,并将其更改为targetRuntime =“iOS.CocoaTouch.iPad”。
现在保存所有内容并重新打开Xcode-> iPad-Storyboard包含与iPhone文件相同的内容,但是每个内容可能都被打乱了,您必须自己安排它。
最后,为了获得iPad格式,还要更改MainStoryboard_iPad.storyboard中的代码:从:到。
然后转到您的“StroryBoardEx-Info.plist”文件,搜索“Main nib file base name(iPad)”,并将其设置为“Main-iPad.storyboard”。

3

如果您只想重新使用您的iPhone故事板,只需要进入您的项目设置。在TARGETS选项卡中的Info中,有两行内容分别为'Main storyboard file base name'和'Main storyboard file base name (iPad)'。只需将iPad的值编辑为与其他相同即可。在我的情况下,我需要将它编辑为'Main storyboard file base name (iPad)',并将值设置为'MainStoryboard_iPhone'。


将设备设置为通用,这样就可以完美地工作(如果您的自动布局正确)。 - Toby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接