【问题标题】: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时它不起作用?

标签: ios swift xcode uistackview


【解决方案1】:

你可能想多了。我创建了我认为您的视图层次结构:

我没有摆弄任何压缩或内容拥抱值。当我更改第二个标签的文本时,整个内容,直到内容视图(它是灰色的,所以我们可以看到它),都会正确调整:

【讨论】:

  • 您对标签设置了哪些限制?他们有底部约束吗?
  • 是的,当然。除了灰色内容视图之外的所有内容都在所有四个方面都有约束。但是标签周围的视图没有限制;堆栈视图创建这些。真的和你描述的一样
  • 我真的不明白。就我而言,我正在做你正在做的事情,但有时标签上方和下方会有大量填充,但仅限于某些单元格。
  • 我不知道这个故事中的“细胞”是什么。 “细胞”一词不会出现在您的问题中的任何地方。在我看来,你问这个问题的方式忽略了你真正问题的重点,不管它是什么。我所展示的是堆栈视图结构本身不是问题,因为这是您所问的。如果有“细胞”,也许你应该问一个新的问题。我回答了这个问题。
  • 我不知道是不是这样。我考虑了你提出的问题,而不是其他问题。您提出的问题中没有单元格。就我而言,内容视图是您的层次结构的顶部。
猜你喜欢
  • 2012-03-19
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多