【问题标题】:Xcode storyboard: Why does the iPad storyboard show iPhone sized views?Xcode 故事板:为什么 iPad 故事板显示 iPhone 大小的视图?
【发布时间】:2012-04-10 06:01:24
【问题描述】:

我有一个使用故事板的通用应用程序。有一个 iPhone 故事板和一个 iPad 故事板。但是,在界面生成器中,iPad 故事板的视图控制器的大小仍然适用于 iPhone。如何让 iPad 故事板显示 iPad 大小的视图控制器?

我意识到界面构建器中的视图控制器显示只是设计时的眼睛糖果,但是拥有 iPhone 大小的 VC 使得正确布局 UI 变得非常困难。

【问题讨论】:

    标签: ios xcode interface-builder storyboard


    【解决方案1】:

    在对故事板源代码进行了一番挖掘之后,事实证明 iPad 故事板是从 iPhone 故事板复制而来的。所以,问题真的变成了如何将 iPhone 故事板转换为 iPad 故事板?

    答案非常简单。我遇到了this SO answer -- 要将 iPhone 故事板转换为 iPad 故事板,请执行以下操作

    1. 在 Xcode 中,右键单击情节提要并选择 Open As -> 源代码

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

    3. 再次右键单击故事板并选择打开方式 -> iOS 故事板

    故事板现在将以正确的大小显示所有视图。

    【讨论】:

    • 非常感谢。这让我发疯了。
    • 谢谢迈克尔!请注意,这也可以在 XIB 上完成。 XIB xml(文档标签)的根元素对“targetRuntime”的引用非常相同。按照迈克尔的建议去做。
    • 我这样做了,现在它只显示 iPad 进行预览(iPhone 已经消失)。知道为什么吗?
    • 你太棒了。谢谢你的回答!
    • 如果您已经对 iPad 进行了更改,但仍然找不到 iPhone,请在文件属性中打开“使用尺寸类别”以查看包括 iPhone 和 iPad 尺寸在内的所有选项。
    【解决方案2】:

    当您首次创建故事板时,您需要选择故事板所针对的设备系列(iPhone 或 iPad)。一旦故事板已经创建,我不知道如何更改设备系列。

    但是,为了解决您的问题,我推荐以下方法:

    通过以下方式创建一个新的故事板:新建 -> 文件 -> 用户界面 -> 故事板(选择选项时请务必选择 Device Family = iPad。)

    转到您的旧情节提要,按 Command-A、Command-C 选择并复制所有内容。然后按Command-V转到您的并粘贴所有内容。您的视图控制器现在将是 iPad 大小的。

    然后您可以删除旧故事板并将新故事板重命名为旧名称。

    【讨论】:

    • 您实际上可以复制/粘贴整个故事板似乎很奇怪。
    • 创建新情节提要时没有选择设备系列。 Xcode 版本为 6.2。
    【解决方案3】:

    此答案不是解决方案,但有助于了解发生此类事情的原因之一。

    当您尝试禁用时会出现问题:

    “使用自动布局”

    当您取消选中它时,会出现弹出窗口。有选择:

    “为 iPhone 保留尺寸类别数据”,默认选择 iPhone(无论您创建的是哪个 iPad 或 iPhone 项目)。

    如果您不提及,您的故事板将自动转换为 iPhone 尺寸

    别忘了选择合适的设备。

    【讨论】:

    • 酷!这个是为我做的
    【解决方案4】:

    我使用建议的答案将 iPhone 故事板转换为 iPad 故事板,它对我的​​大多数观点都非常有效。然而,我意识到其中一个视图仍然是 iPhone 故事板大小。原因是我锁定了一张背景图片的所有属性(因为我不想意外移动它)。移除锁将视图变回 iPad 大小。这可能会帮助坚持这一点的人。

    【讨论】:

    • 我还复制了适用于 iPad 的 iPhone 故事板,所有视图都可以正常工作,只有 2 个文本视图。你能告诉我如何禁用这个锁或者这个选项在哪里可用,因为我没有在我的 iPhone 故事板上锁定任何东西。谢谢
    【解决方案5】:

    确保在 Target > General 中设置了正确的 Storyboard。在我意识到我为 iPhone 设置的故事板与我的 iPad 故事板相同之前,这种东西让我头疼了 3 个小时。

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        对我来说,通过将视图控制器显示更改为全屏而不是自动,我发现它更容易,我使用 Xcode 12.1

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-09-20
          • 2015-07-18
          • 1970-01-01
          • 2014-12-20
          • 2013-11-16
          • 2014-11-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多