如何根据子视图高度设置堆栈视图高度?

时间:2018-01-10 07:07:05

标签: ios swift xcode

我要求滚动六种不同类型的视图,每个视图都有不同的大小,其中一个视图是:关于我。在关于我,我必须显示标题(即关于我)和它下面的文字,标签高度应该根据文字高度。

直到现在我已将此要求设计为:

Root View      - 堆栈视图         *项目1具有固定高度         *项目2具有固定高度         *关于我的UIView:              - 标记为标题              - 标记为文本,最大行设置为0,宽度等于容器宽度。

问题是:我无法设置关于我UIView的修复高度,并且它不会根据标签文本调整大小。 请提出相应的解决方案。

2 个答案:

答案 0 :(得分:3)

您好,您可以像这样获得stackView的内在高度:

let size = stackView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize)

我知道我回复这条消息有点迟了。但我有同样的问题,我找到了这段代码。以为任何寻找这个的人都认为有用:)

答案 1 :(得分:0)

我认为你没有明确表明你的问题。我要指出的第一件事是UIStackView可以通过其排列的子视图的大小来推断其大小。但您必须首先确认添加到子视图的约束是否正确。因此,如果你没有得到你想要的大小调整效果,你必须遗漏一些东西。也许你没有做出合理的约束。

为了澄清您的情况,您最好添加一些添加到“关于我”视图中的约束的屏幕截图。顺便问一下,UIStackView的轴是什么?

我不知道其中任何一个。所以我必须为我做一些假设来解释你的问题。

  • UIStackView的轴是UILayoutConstraintAxisVertical
  • 您的UIStackView(或您的所有内容)都有固定的宽度。

根据上述条件,定义其高度由其文本决定的视图将很简单。因为UILabel不必具有固定大小。您只需指定其宽度(或指定其超前视图的前导和尾随),其高度将根据其字体和内容自动计算。

你的关于我的视图有两个标签,所以你应该
确保这些事情:

  • 标题标签:超级视图的顶部,前导,尾随约束。和字幕标签的底部间隙(无论你怎么称呼)。
  • 字幕标签:超视图的前导,尾随,底部约束。和标题标签的最大差距。