Xcode Storyboard 中的 "Inferred" 和 "Freeform" 有什么区别?

What is the difference between "Inferred" and "Freeform" in Xcode Storyboard?

我有一个自定义视图需要在所有 iPhone 设备(4、4S、5、5S、6 和 6 Plus)上显示。在创建自定义视图 XIB 时,我将其称为 "Inferred" 但它不会针对 iPhone 6 和 iPhone 6 Plus 设备调整大小。我无法弄清楚这个问题。我对 "Inferred" 和 "Freeform" 之间的实际差异感到困惑。有人可以解释一下区别吗?

Inferred 根据其父场景调整场景大小。例如,如果您有一个大小为 iPad 的场景,然后您将一个新场景添加到您的故事板并为其创建一个转场,它会自动调整为与 iPad 相同的大小场景(segue 的起源地)。

Freeform 忽略上述规则,您可以在右侧的实用程序窗格中根据需要调整大小。

然而,这两者都与视图在实际设备上的显示方式和大小无关。为此,您需要使用 auto layout 和约束。或者 springs and struts。如果他们需要更大的灵活性,有些人甚至会用代码来实现。

“推断”是故事板的默认设置,这意味着场景将在导航控制器内部显示导航栏,在标签栏控制器内部时显示标签栏,等等。如果愿意,您可以覆盖这些设置,但请记住,它们仅用于帮助您设计屏幕。模拟指标不会在运行时使用,它们只是一种可视化设计辅助工具,可以显示您的屏幕最终会是什么样子。

"FreeForm" 通常,当您以编程方式将视图控制器作为子视图控制器添加到另一个视图控制器时,您会使用自由形式 属性,并且您确实希望固定它 size.If 您按下view controller 或者你把它呈现为 modal view controller(并且你使用 modal presentation styles)那么就没有必要使用 freeform.Also 自由形式的另一个用途 属性 是预览视图的实际大小使用现有呈现样式呈现为模态视图控制器时的控制器。