ios - 创建预期的 UI 行为,同时也不会收到破坏约束警告

标签 ios swift uiview autolayout constraints

我在 UIView 中有一个水平 stackView 的高度约束,我根据 View 的内容更改它。如果 stackView 中标签的文本超出一定大小,则约束移动到 116.33,否则为 96。此水平 stackView 固定到此 UIView 的顶部。

在运行时,我得到了这个约束被打破的警告,但我得到了预期的操作:

enter image description here

enter image description here

如果我删除约束“Horizo​​ntal Stack View.top = top”,不会出现警告,但我没有得到预期的操作:

enter image description here

我已经尝试通过 locationView.frame.size.height 相应地更改 UIView 的高度,以及通过向 View 添加另一个约束,具体来说,并以与调整 stackView 高度约束相同的方式进行调整,但是结果行为本质上是相同的。

这是文档大纲:

enter image description here

我怎样才能达到预期的效果,同时让 XCode 开心?

最佳答案

以下是我如何解读您的 4 个相互冲突的约束:

  1. StackView 的水平高度为 96。
  2. Horizo​​ntal StackView 和 Vertical StackView 在它们的顶部对齐。
  3. Horizo​​ntal StackView 和 Vertical StackView 在底部对齐。
  4. StackView 的垂直高度 >= 136。

所以 StackView 的高度是相同的,因为它们的顶部和底部对齐。但是他们每个人都有自己的高度限制。

我建议去掉其中一个 StackView 高度限制。

关于ios - 创建预期的 UI 行为,同时也不会收到破坏约束警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48969028/

相关文章:

ios - 将字符串日期格式化为 DiffForHumans 样式

ios - UIPickerView 不会显示

iOS - 通过 Swift 更改约束的乘数

uiview - 如何让UIView透明

ios - "hide"具有自动布局的 subview 的 UIView

ios - ESC POS打印PNG图像

ios - 推送通知 Json 中 "Content-available"的用途?

ios - 动画完成时隐藏 UIProgressView

来自 Bridging-Header Obj-C++ 的 C++ header 问题

objective-c - 在横向模式下向 UIScrollView 添加 subview