一个子视图的固有内容大小优先的 UIStackView 分布
UIStackView distribution with intrinsic content size of one subview prioritised
stackView
+------------+ +
| topView | height: 50 |
+------------+ |
| | |
| | | total height: 300
| bottomView | height: 250 |
| | |
| | |
+------------+ +
我想在 UIStackView
(stackView
) 中布局两个视图 (topView
和 bottomView
),条件如下:
stackView
有身高(比如说 300)
topView
和 bottomView
的内在内容高度相同(假设为 50)
topView
应该以其固有的内容高度呈现(最多 stackView
的高度)(所以 50)
bottomView
应该取剩余的 space(所以 250)
- 如果
topView
的固有内容高度发生变化(假设为 100),则分布应为 100/200
None UIStackView 的分布方式可以覆盖这个
设置一个常量约束在这里没有帮助,因为 topView
的固有内容高度可能会改变。
所以我需要一些自动布局功能。我尝试设置不同的内容压缩阻力优先级和内容拥抱优先级。没有成功,我仍然觉得它们可能是一个解决方案(如果我知道如何正确使用它们的话)。
这似乎不是一个复杂的问题,我找不到合适的自动布局API。有什么提示吗?
你应该设置:
- 顶部视图的垂直内容拥抱优先级高于底部视图
- 要填充的堆栈视图对齐方式
- 要填充的堆栈视图分布
如果顶视图和底视图没有固有宽度,您还应该添加宽度约束。
演示:
stackView
+------------+ +
| topView | height: 50 |
+------------+ |
| | |
| | | total height: 300
| bottomView | height: 250 |
| | |
| | |
+------------+ +
我想在 UIStackView
(stackView
) 中布局两个视图 (topView
和 bottomView
),条件如下:
stackView
有身高(比如说 300)topView
和bottomView
的内在内容高度相同(假设为 50)topView
应该以其固有的内容高度呈现(最多stackView
的高度)(所以 50)bottomView
应该取剩余的 space(所以 250)- 如果
topView
的固有内容高度发生变化(假设为 100),则分布应为 100/200
None UIStackView 的分布方式可以覆盖这个
设置一个常量约束在这里没有帮助,因为 topView
的固有内容高度可能会改变。
所以我需要一些自动布局功能。我尝试设置不同的内容压缩阻力优先级和内容拥抱优先级。没有成功,我仍然觉得它们可能是一个解决方案(如果我知道如何正确使用它们的话)。
这似乎不是一个复杂的问题,我找不到合适的自动布局API。有什么提示吗?
你应该设置:
- 顶部视图的垂直内容拥抱优先级高于底部视图
- 要填充的堆栈视图对齐方式
- 要填充的堆栈视图分布
如果顶视图和底视图没有固有宽度,您还应该添加宽度约束。
演示: