具有一个静态和一个动态子级的堆栈视图?
Posted
技术标签:
【中文标题】具有一个静态和一个动态子级的堆栈视图?【英文标题】:Stack view with one static and one dynamic child? 【发布时间】:2021-02-20 20:06:42 【问题描述】:即使在阅读了数十篇文章和答案之后,我仍然很难理解如何使这项工作按我的意愿工作。
我想制作一个带有两个UIView
孩子的垂直堆栈视图。在第一个孩子里面,我想要一个静态高度的标签。在第二个孩子内部,我想要一个动态高度的标签(即任意数量的行长)。
现在,我是这样设置的:
- Content view
- Stack view (top, right, bottom, and left constraints set to superview, distribution set to Fill)
- UIView (vertical content hugging set to 251)
- Label (top, right, bottom, and left constraints set to superview)
- UIView (vertical content hugging set to 249)
- Label (top, right, bottom, and left constraints set to superview)
这就是事情变得奇怪的地方。有时,第二个孩子真的很高(比它的内容高),有时它比它的内容小(即如果标签中的文本应该出现在 2 或 3 行,它只显示第一行)。
我做错了什么??
【问题讨论】:
我刚刚发现,如果我删除第二个UIView
并简单地用第二个标签替换它,它就可以工作。那么为什么当标签嵌入UIView
时它不起作用?
【参考方案1】:
你可能想多了。我创建了我认为您的视图层次结构:
我没有摆弄任何压缩或内容拥抱值。当我更改第二个标签的文本时,整个内容,直到内容视图(它是灰色的,所以我们可以看到它),都会正确调整:
【讨论】:
您对标签设置了哪些限制?他们有底部约束吗? 是的,当然。除了灰色内容视图之外的所有内容都在所有四个方面都有约束。但是标签周围的视图没有限制;堆栈视图创建这些。真的和你描述的一样 我真的不明白。就我而言,我正在做你正在做的事情,但有时标签上方和下方会有大量填充,但仅限于某些单元格。 我不知道这个故事中的“细胞”是什么。 “细胞”一词不会出现在您的问题中的任何地方。在我看来,你问这个问题的方式忽略了你真正问题的重点,不管它是什么。我所展示的是堆栈视图结构本身不是问题,因为这是您所问的。如果有“细胞”,也许你应该问一个新的问题。我回答了这个问题。 我不知道是不是这样。我考虑了你提出的问题,而不是其他问题。您提出的问题中没有单元格。就我而言,内容视图是您的层次结构的顶部。以上是关于具有一个静态和一个动态子级的堆栈视图?的主要内容,如果未能解决你的问题,请参考以下文章