1
  stackView
+------------+                +
|  topView   | height: 50     |
+------------+                |
|            |                |
|            |                | total height: 300
| bottomView | height: 250    |
|            |                |
|            |                |
+------------+                +

我想在具有以下条件的( ) 中布局两个视图 (topViewbottomView) :UIStackViewstackView

  • stackView有一个高度(比如说 300)
  • topView's 和bottomView' 的内在内容高度相同(比如说 50)
  • topView's 应该以其内在内容高度(最高stackView's 高度)呈现(所以 50)
  • bottomView应该占用剩余空间(所以 250)
  • iftopView的内在内容高度发生变化(假设为 100),分布应为 100/200

UIStackView 的所有分发模式都无法涵盖这一点。

使用常量设置约束在这里无济于事,因为topView可能会改变的内在内容高度。

所以我需要一些自动布局功能。我尝试设置不同的内容压缩阻力优先级和内容拥抱优先级。如果没有成功,我仍然觉得它们可以成为一个解决方案(如果我知道如何正确使用它们)。

这似乎不是一个复杂的问题,我找不到合适的 Auto Layout API。有什么提示吗?

4

1 回答 1

2

你应该设置:

  • 垂直内容拥抱顶视图的优先级高于底视图
  • 堆栈视图对齐以填充
  • 要填充的堆栈视图的分布

如果顶部和底部视图没有固有宽度,您还应该添加宽度约束。

演示:

在此处输入图像描述 在此处输入图像描述

于 2021-04-01T10:11:32.333 回答