Xcode 7自动布局是否已损坏或难以使用

时间:2016-03-11 12:33:40

标签: ios autolayout xcode7

自从迁移到Xcode 7后,我收到了许多我在Xcode 6中没有得到的警告 - “Frame for -text field-在运行时会有所不同”。

我已经遵循了所有建议的解决方案,基于“解决自动布局问题”,但这实际上打破了我建立的布局,对象不再位于我想要的位置。在我看来,这是一个错误。

为了测试这个,我创建了一个新的VC,并添加了一个标签,按钮和文本字段。对于按钮和标签,我设置约束来建立垂直位置,然后固定高度和宽度,最后水平居中在容器上。这就是我一直使用自动布局的方法,它可以正常显示蓝色约束,没有错误或警告。问题是文本字段,我已经拉伸到VC的左右指南。为此,我添加了垂直,左右约束和固定高度,我留下了一个警告 - “框架为”圆形样式文本字段“在运行时会有所不同。”我在这里没有做任何复杂的事情,只是使用自动布局,我在以前版本的Xcode中一直使用它。所以我只能看到以下可能性:

  1. 它是一个错误,无法正常工作。它与Xcode指南有关,但是4个位置不合适......为什么?
  2. 我不再支持我一直使用自动布局的方式,我需要以不同的方式使用它。当我使用reset来建议约束时,它会移除右手约束并用中心约束替换它以与其上方的按钮对齐。我不明白这些建议的约束是如何起作用的,因此我不会想到这样做。
  3. 在不让Xcode为你做的情况下,它不再能够正常应用约束吗?当我在过去遇到问题时,我只是简单地清除了约束并重新应用它们并且它始终有效。现在即使使用这个非常简单的测试VC,我也无法成功地应用约束!
  4. 我得到的印象是,大多数人发现自动布局存在问题,因此很少有人使用它,但除非我们深入研究这样的问题,否则它将继续存在。我对自动布局工作方式的任意改变感到沮丧。在我报告错误之前,我希望得到其他具有自动布局经验的人的观点。

1 个答案:

答案 0 :(得分:1)

界面构建器与AutoLayout相当精神分裂。它在您的视图上保留了两个基本上独立的设置:它们的框架及其约束。这些帧在运行时被忽略,并被约束覆盖。

如果视图的帧与应用约束所产生的帧不匹配,则会收到警告。

要解决此问题,请使用编辑器菜单>解决自动布局问题>更新框架。 (“解决自动布局问题”命令也可以从三角形图标中获得,正如甘道夫在评论中提到的那样。)

调整视图的大小和位置以匹配您设置的约束。

“重置为建议的约束”命令则相反,并根据(我认为)视图的位置丢弃并替换您的约束。我从未发现这有用。我会说,一旦你开始设置约束,最好避免。