自从迁移到Xcode 7后,我收到了许多我在Xcode 6中没有得到的警告 - “Frame for -text field-在运行时会有所不同”。
我已经遵循了所有建议的解决方案,基于“解决自动布局问题”,但这实际上打破了我建立的布局,对象不再位于我想要的位置。在我看来,这是一个错误。
为了测试这个,我创建了一个新的VC,并添加了一个标签,按钮和文本字段。对于按钮和标签,我设置约束来建立垂直位置,然后固定高度和宽度,最后水平居中在容器上。这就是我一直使用自动布局的方法,它可以正常显示蓝色约束,没有错误或警告。问题是文本字段,我已经拉伸到VC的左右指南。为此,我添加了垂直,左右约束和固定高度,我留下了一个警告 - “框架为”圆形样式文本字段“在运行时会有所不同。”我在这里没有做任何复杂的事情,只是使用自动布局,我在以前版本的Xcode中一直使用它。所以我只能看到以下可能性:
我得到的印象是,大多数人发现自动布局存在问题,因此很少有人使用它,但除非我们深入研究这样的问题,否则它将继续存在。我对自动布局工作方式的任意改变感到沮丧。在我报告错误之前,我希望得到其他具有自动布局经验的人的观点。
答案 0 :(得分:1)
界面构建器与AutoLayout相当精神分裂。它在您的视图上保留了两个基本上独立的设置:它们的框架及其约束。这些帧在运行时被忽略,并被约束覆盖。
如果视图的帧与应用约束所产生的帧不匹配,则会收到警告。
要解决此问题,请使用编辑器菜单>解决自动布局问题>更新框架。 (“解决自动布局问题”命令也可以从三角形图标中获得,正如甘道夫在评论中提到的那样。)
调整视图的大小和位置以匹配您设置的约束。
“重置为建议的约束”命令则相反,并根据(我认为)视图的位置丢弃并替换您的约束。我从未发现这有用。我会说,一旦你开始设置约束,最好避免。