XCode - 模拟器/设备不尊重自动布局约束

Posted

技术标签:

【中文标题】XCode - 模拟器/设备不尊重自动布局约束【英文标题】:XCode - Simulator/Device doesn't respect auto-layout constraints 【发布时间】:2016-07-17 16:32:44 【问题描述】:

所以我正在尝试创建一个带有两列的音板应用程序,其中按钮会自动调整以适应设备屏幕。我使用了自动布局和一些约束来创建一组应该可以完美运行的指标。在 Storyboard(Preview) 文件中预览时,它会如我所愿(见下图):

但是,在设备或模拟器上运行实际应用程序时,不遵守约束条件,音板显示如下: (请忽略圆角 - 这些是通过编程设置的)。

我没有收到来自控制台的输出,给我的约束冲突错误,所以一直在摸不着头脑,但仍然没有解决方案。

这些是我设置的约束:

更新

【问题讨论】:

【参考方案1】:

您需要添加高度限制或设置按钮的content hugging priority

在我看来,问题在于 12 个按钮比暂停按钮具有更高/相等的垂直内容拥抱优先级。 12 个按钮尝试垂直拥抱其内容,暂停按钮扩展(通过添加 bg 颜色更容易看出这是否属实)以符合剩余的约束。您不会收到错误消息,因为没有冲突的约束,它会尽可能地尊重它们的约束

您可以尝试让 12 个按钮的垂直内容拥抱优先级低于暂停按钮。或者,尝试为所有 12 个按钮添加相等的高度约束,然后设置固定高度约束或为暂停按钮上的垂直内容拥抱优先级设置必需 (1000)

【讨论】:

感谢您的回答。我已经将按钮设置为具有相等的高度约束,但忘记将其添加到原始问题中 - 请参阅更新 :) 我明白了,你对暂停按钮有高度限制吗?我在你贴的截图上看不到。如果不能,您可以尝试在暂停按钮上添加 30 的固定高度约束,看看是否有任何区别 那个人做到了!非常感谢!

以上是关于XCode - 模拟器/设备不尊重自动布局约束的主要内容,如果未能解决你的问题,请参考以下文章

Swift 自动布局在 Xcode 9.3 中不起作用

使用Xcode 6中的AutoLayout约束模拟方面适合行为

Xcode 6.3 故事板自动布局约束

UITableView 最大尺寸,同时尊重自动布局约束

为啥自动布局在 xcode 7.2 中不再起作用?

自动布局约束没有得到尊重