更新 Xcode 中的框架和约束(界面生成器)

Posted

技术标签:

【中文标题】更新 Xcode 中的框架和约束(界面生成器)【英文标题】:Update Frames & Constraints in Xcode (Interface Builder) 【发布时间】:2015-08-01 00:21:18 【问题描述】:

我一直在学习 Xcode 和 ios,并且在编码方面进展顺利,但我对界面构建器中的一些选项感到困惑。

似乎当我添加约束时,我可以选择“更新框架”,然后选择“新约束的项目”或“所有框架”,但似乎我并不总是需要这样做......有时我会,有时我不会——我认为我并不真正理解这个概念。它似乎是可选的。什么时候选还是不选?

一旦添加了约束,就应该这样吗?

还有一个上下文菜单(解决自动布局问题)(界面生成器底部的第三项,由 2 条垂直线之间的三角形表示),它还允许我强制更新约束或更新框架。为什么需要这个?我注意到里面的选项通常被禁用,所以我认为当出现问题时它会变为活动状态?

我已尝试在互联网上搜索,但找不到任何具体内容;我读得越多,我似乎就越困惑。

另外,完整性检查:框架是每个控件(视图)的边界框,而不仅仅是视图控件,因此每个视图(控件)都是它自己的框架。这是正确的吗?

【问题讨论】:

这是否意味着在实际运行时不需要单击Update Frames,只有开发人员才能看到更准确的故事板表示? 【参考方案1】:

我将尝试解释约束和情节提要表示的概念。约束 - 用于确定 UIView 元素在视图中的位置。例如,从视图顶部到 UIView 元素顶部的垂直距离。当您使用情节提要添加约束时,它扮演两个角色:

    在应用运行时将元素定位在视图中 在故事板表示本身中定位元素

Update Frames - 当您想要更新 storyboard 显示以使其适合当前应用的约束时使用。当情节提要的显示与约束不匹配时,将出现警告。

添加缺少的约束/更新约束 - 将创建/更改应用于 UIView 元素的约束以匹配故事板中当前呈现的内容。与更新框架相反。

此答案不能替代Apple's Auto Layout Guide

【讨论】:

【参考方案2】:

您不必每次添加约束时都单击“更新框架”,如果这样做,它将根据约束将视图的框架更新为应有的内容。是的,每个视图都有一个框架,它是相对于视图父视图的矩形。

您通常可能会单击更新约束(Shift + Command + =),这将允许您调整已经受到约束的视图的大小,并更新约束以匹配。

【讨论】:

以上是关于更新 Xcode 中的框架和约束(界面生成器)的主要内容,如果未能解决你的问题,请参考以下文章

更新接口构建器以匹配约束

Xcode Interface builder 中的 Nib 视图不应用自动布局约束

界面生成器中的自动布局

如何自动更新xcode中的帧?

Xcode 6 不遵守自动布局约束

Xcode 9. 界面生成器。缺少已安装的复选标记