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

标签 ios autolayout xcode7

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

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

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

  1. 这是一个错误,无法正常工作。它与 Xcode 指南相关联,但有 4 个单位错位……为什么?
  2. 不再支持我一直使用自动布局的方式,我需要以不同的方式使用它。当我对建议的约束使用重置时,它会删除右手约束并将其替换为中心约束以与其上方的按钮对齐。我不明白这些建议的约束是如何工作的,所以我自己不会考虑这样做。
  3. 如果不让 Xcode 为您执行约束,就不再可能正常应用约束吗?当我过去遇到问题时,我只是简单地清除限制并重新应用它们,它总是有效的。现在,即使使用这个非常简单的测试 VC,我自己也无法成功应用约束!!

我的印象是大多数人发现自动布局有问题,因此很少有人使用它,但除非我们找到问题的根源,否则它只会继续下去。我对自动布局工作方式的任意改变感到沮丧。在我报告错误之前,我想征求其他具有自动布局经验的人的意见。

最佳答案

Interface builder 对 AutoLayout 相当反感。它在您的 View 上维护 2 个基本独立的设置:它们的框架和它们的约束。这些帧在运行时被忽略并被约束覆盖。

如果 View 的框架与应用约束产生的框架不匹配,您会收到您收到的警告。

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

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

“重置为建议的约束”命令做相反的事情,并根据(我认为) View 的位置丢弃和替换您的约束。我从来没有发现这有用。我会说,一旦您开始设置约束,最好避免这种情况。

关于ios - Xcode 7 自动布局是否损坏或难以使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35940416/

相关文章:

swift - 我的约束破坏日志没有任何意义,有人可以帮助我理解吗?

ios - iOS BLE 连接参数是否也适用于 iOS 从设备/外围设备?

iphone - 键盘中的空格按钮替换 UITextview 中的字符 - iOS (Obj-C)

iOS 自动布局更改前导和尾随空格

在模拟器中激活时,iOS 通话状态栏不显示。这是正常行为吗?

ios - Xcode UI 测试 - 通过 id 在 Webview 中查找元素

objective-c - 从 Xcode 6.4 中构建提交应用程序

ios - 应用程序传输安全问题 iOS9

IOS无法正确解码json格式的emoji unicode,Emoji图标显示为正方形

ios - 如何在 iOS 上扩展 Activator 以识别新的输入手势?