对 2 个 Storyboard 使用相同的 ViewController 文件(以获得相同的视图)

Posted

技术标签:

【中文标题】对 2 个 Storyboard 使用相同的 ViewController 文件(以获得相同的视图)【英文标题】:Using same ViewController files for 2 Storyboards (to get identical views) 【发布时间】:2013-10-19 17:27:07 【问题描述】:

我正在构建我的第一个单视图应用程序。我的主故事板中有我的 UI 元素。我根据 3.5 英寸的屏幕安排了所有元素,现在看起来不错。我希望该应用程序在 4 英寸显示屏上也看起来不错。现在我创建了一个 4 英寸的故事板(空白),我希望显示具有完全相同的插座的类似视图,只需更改布局和位置以适应 4 英寸屏幕。

我认为我可以为不同的布局创建一个单独的故事板视图,但使用相同的视图控制器文件(.h 和 .m),因此所有内容(按钮和标签等)都以相同的方式工作,但我没有知道去做。这是一个正确的想法吗?如果是,如何实现?

【问题讨论】:

【参考方案1】:

当然,你可以……但没必要!您应该对autolayout 感兴趣。 这是关于如何做到这一点的两部分tutorial。

当然,您可以对其他 Storyboard 使用相同的类。这正是您在开发通用应用程序时所做的。但在这种情况下,您必须在代码中做出一些假设,以确定您使用的是 4 英寸还是 3.5 英寸屏幕。 预处理器说明会对您有所帮助

【讨论】:

【参考方案2】:

有很多方法可以实现您的主要目标:

    只有一个带有自动布局的情节提要项目 将屏幕调整为 3.5/4 英寸 如果您不喜欢自动布局并且视图并不复杂,“弹簧和支柱”也可以实现自动调整大小。 您可以在同一个故事板中同时拥有 3.5 和 4 英寸的视图控制器,使用“self.storyboard instantiateviewcontrollerwithidentifier”访问其中一个 您可以拥有任意数量的故事板,并执行 UIStoryboard *storybord = [UIStoryboard storyboardWithName..

PS:我是选项 2 的粉丝。当应用程序通用时,通常值得拥有 2 个故事板,因此您将拥有一个用于 iPhone 和一个用于 iPad。

【讨论】:

感谢您的回复。我已经尝试过自动布局,但效果不佳。我已经创建了第二个故事板,如果屏幕为 4 英寸,则可以启动。但它现在是空的,我不知道如何将我在第一个故事板中的内容放入(复制)到新的故事板中,以便我可以移动某些元素。你能详细解释一下选项2吗? 选择你的 vc 的根视图,复制,转到另一个故事板,选择根视图并粘贴

以上是关于对 2 个 Storyboard 使用相同的 ViewController 文件(以获得相同的视图)的主要内容,如果未能解决你的问题,请参考以下文章

在 Nativescript iOS 应用上使用 XIB 和 Storyboard

如何通过编码管理 .storyboard 或 .xib 文件中的多个视图。?

从 Storyboard 加载的 UICollectionView 未正确调整大小

linux vi命令详解2

使用自动布局在 Storyboard 中与分辨率无关的同等大小的元素

如何使用 Storyboard 以编程方式添加动作