Xcode故事板:为什么iPad故事板显示iPhone大小的视图?

21

我有一个使用storyboards的通用应用程序。其中有一个iPhone storyboard和一个iPad storyboard。然而,在界面构建器中,iPad storyboard的视图控制器仍然以iPhone大小进行调整。如何使iPad storyboard显示适合iPad大小的视图控制器?

我知道界面构建器中的视图控制器只是设计时的装饰,但是使用iPhone大小的视图控制器确实使UI布局变得非常困难。

7个回答

64
经过研究storyboard源代码后,发现iPad storyboard是从iPhone storyboard复制而来的。那么问题真正变成了如何将iPhone storyboard转换成iPad storyboard?
答案出奇的简单。我遇到了这个Stack Overflow答案——要将iPhone storyboard转换为iPad storyboard,按照以下步骤操作:
  1. 在Xcode中,右键点击storyboard并选择Open As ->Source code

  2. 搜索targetRuntime="iOS.CocoaTouch"并将其更改为targetRuntime="iOS.CocoaTouch.iPad"

  3. 再次右键点击storyboard并选择Open As ->iOS Storyboard

这样,故事板中的所有视图都会以正确的尺寸显示。

非常感谢。这让我疯狂了。 - rmvz3
1
谢谢你,Michael!需要注意的是,这也可以在XIB上完成。XIB xml的根元素(文档标签)也具有对“targetRuntime”的完全相同引用。请像Michael建议的那样操作。 - bladnman
如果您已经将更改应用于iPad,但仍无法找到iPhone,请在文件属性中打开“使用尺寸类”以查看所有选项,包括iPhone和iPad尺寸。 - morph85
令人难以置信的是,我在2017年仍然需要这样做! - Echelon
请检查以下代码行:<device id="ipad12_9" orientation="landscape" layout="fullscreen" appearance="light"/>,注意其中的id="ipad12_9"部分。(Xcode 13.3.1) - Rakshitha Muranga Rodrigo
显示剩余3条评论

8
当你第一次创建一个故事板时,你需要选择一个设备系列(iPhone或iPad),以便针对该故事板进行定位。我不知道如何在已经创建了故事板后更改设备系列。
然而,为了解决你的问题,我建议你采取以下措施:
通过进入“新建”->“文件”->“用户界面”->“故事板”来创建一个新的故事板(确保在选择选项时选择设备系列= iPad)。
进入旧的故事板,按下Command-A、Command-C选择和复制所有内容。然后进入新的故事板,按下Command-V粘贴所有内容。你的视图控制器现在将是iPad大小的。
接着你可以删除旧的故事板,并将新的故事板重命名为旧的名称。

似乎很奇怪,你竟然可以复制/粘贴整个故事板。 - Bilbo Baggins
2
当我创建新的故事板时,我没有设备系列选择。Xcode版本为6.2。 - septerr

3

这个回答并不是一个解决方案,但它会帮助你找到其中一个原因。

当你尝试禁用以下选项时:

"使用自动布局"

当你取消勾选它时,将出现弹出窗口。在这里你可以选择:

"保留尺寸类数据:iPhone",默认选择的是iPhone(无论你创建的是哪个iPad或iPhone项目)。

如果你不提及它,你的Storyboard将会自动转换为iPhone尺寸

别忘了选择正确的设备。


太酷了!这个对我有用。 - becker

0
在我的通用应用程序中,我使用了SpriteKit作为主视图控制器。SKScene.scaleMode设置为aspectFill。在iPad模拟器中运行时,该应用程序以iPhone模式启动。解决方案是将scaleMode = .resizeFill进行设置。

0

确保在目标 > 通用中设置了正确的Storyboard。这种事情让我头疼了3个小时,直到我意识到我为iPhone设置了与我的iPad Storyboard相同的Storyboard。


0

对我来说,我发现将视图控制器的呈现方式更改为全屏比自动更容易,我使用的是Xcode 12.1。

enter image description here

A


0
我使用了建议的方法将 iPhone 的故事板转换为 iPad 的故事板,并且它在大多数视图上都运行良好。然而,我意识到其中一个视图仍然是 iPhone 故事板大小。原因是我锁定了一个背景图像的所有属性(因为我不想意外移动它)。解除锁定可以将该视图恢复为 iPad 大小。这可能会帮助到遇到这个问题的人。

我也将iPhone的storyboard复制到了iPad上,所有视图都能正常工作,只有两个textViews出现了问题。请问您如何禁用此锁定或在哪里可以找到此选项,因为我没有在我的iPhone storyboard上锁定任何内容。谢谢。 - Hussain Mansoor

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