【发布时间】:2016-06-26 17:02:09
【问题描述】:
自从迁移到 Xcode 7 后,我收到了很多在 Xcode 6 中没有收到的警告 - “ - 文本字段的框架 - 在运行时会有所不同”。
我已遵循基于“解决自动布局问题”的所有建议解决方案,但这实际上破坏了我建立的布局,其中对象不再位于我想要的位置。在我看来,这是一个错误。
为了测试这一点,我创建了一个新的 VC 并添加了一个标签、按钮和文本字段。对于按钮和标签,我设置约束以建立垂直位置,然后固定高度和宽度,最后在容器上水平居中。这就是我一直使用自动布局的方式,它可以正常工作,显示蓝色约束并且没有错误或警告。问题是我已经拉伸到 VC 的左右指南的文本字段。为此,我添加了垂直、左右约束和固定高度,并留下警告 - ““圆形文本字段”的框架在运行时会有所不同。我在这里没有做任何复杂的事情,只是使用我在以前版本的 Xcode 中一直使用的自动布局。所以我只能看到以下几种可能:
- 这是一个错误,无法正常工作。它与 Xcode 指南相关联,但位置偏离了 4 个单位……为什么?
- 不再支持我一直使用自动布局的方式,我需要以不同的方式使用它。当我使用重置为建议的约束时,它会删除右手约束并将其替换为中心约束以与其上方的按钮对齐。我不明白这些建议的限制是如何工作的,所以我自己也不会这么想。
- 如果不让 Xcode 为您做,就不能正常应用约束了吗?当我过去遇到问题时,我只需清除约束并重新应用它们,它总是有效的。现在,即使使用这个非常简单的测试 VC,我自己也无法成功应用约束!!
我的印象是大多数人发现自动布局存在问题,因此很少有人使用它,但除非我们查明此类问题的根源,否则它将继续存在。我对自动布局工作方式的任意更改感到沮丧。在我报告错误之前,我想从其他有自动布局经验的人那里获得意见。
【问题讨论】:
-
不,这不是错误,在您的故事板中 Pin Constraint 选项的右侧有一个三角形图标。单击它,您将看到“更新框架”选项。选择每个抱怨在运行时更改框架的视图,并通过单击该选项来更新它的框架。
-
嗨,甘道夫,感谢您的反馈,但我遇到的问题是,如果您更新框架或约束或重置为建议的约束,它会改变您的布局。如果你在一个 VC 上有很多对象,并且你让它们按照你想要的方式对齐,那么让 Xcode 将某些东西移到左边来解决它所担心的问题是没有好处的。我要说的一点是,当 Xcode 6 中的同一个项目在没有警告的情况下运行良好时,为什么在 Xcode 7 中开始发生这种情况。再一次对我来说似乎是一个错误。
-
使用我的简单文本字段示例,正如我所解释的,我使用标准指南将文本字段拉伸到距屏幕边缘的固定距离,即 20 个单位,但我收到警告说它应该16岁!!!!当我的对象捕捉到的标准准则是 20 个单位时,为什么它应该是 16 个单位?如果我遵循您的建议并更新框架,它会将文本字段左右拉伸 4 个单位,因此它现在距离屏幕边缘更近 4 个单位。这简直是不合逻辑的,就像 Apple 更改了编译器中的指南但忘记更改 IB 一样。
-
有没有人对此有任何进一步的 cmets,我仍然不明白为什么每个人似乎都接受这个工作正常?我将作为错误提交并报告。
-
我无法从你的陈述中找出任何东西 问题是 Xcode 7 似乎希望这些距离视图边缘 16 个单位,但指导方针是 20。您能否创建一个带有 problem unresolved 的基本示例代码,我可能会在查看后尝试回答。我一直在使用 Xcode 6 的 AutoLayout,现在我在 Xcode 7.2 上,但从未见过我应该称之为错误的情况。
标签: ios autolayout xcode7