动态宽度大小以适应堆栈视图中的控件

Posted

技术标签:

【中文标题】动态宽度大小以适应堆栈视图中的控件【英文标题】:Dynamic width size to fit of controls in stackview 【发布时间】:2019-01-30 09:08:01 【问题描述】:

我有一个带有按钮和标签的水平堆栈视图

案例 1: 按钮文本是动态的,它的大小应该适合文本。所以我在要求中添加了拥抱和压缩。这完美无缺

案例 2: 但是当我的标签被隐藏时,Button 会占用 stackview 的整个空间。我该如何避免呢?

我需要固定按钮宽度以适合标题。请参考下面的屏幕外观

故事板中添加了所有约束。我不想以编程方式进行

请指教

【问题讨论】:

这是正常的UIStackView 行为。您可以将标签的alpha 设置为0,而不是将其isHidden 属性设置为true。或者将标签的text 设置为空字符串。 您可以为按钮添加宽度限制 或者只使用UIView而不是UIStackView 将固定宽度添加到按钮,并将堆栈视图上的 750 优先级尾随到超级视图 UIStackView 不要使用尾随常量,它会根据内容自动调整宽度。 【参考方案1】:

有多种方法。

第一个 stackView:你的正常情况。

第二个stackView:

label.text 具有“”值。 如果您没有为 stackView 显式添加高度约束,添加空白文本可能会使 stackView 高度增加。 此外,按钮有宽度限制。

第三个stackView:

标签 alpha 设置为 0。 按钮有宽度限制。

【讨论】:

以上是关于动态宽度大小以适应堆栈视图中的控件的主要内容,如果未能解决你的问题,请参考以下文章

如何调整我的堆栈视图的分布以适应不相等的视图大小?

具有动态标签宽度的堆栈视图分布

如何调整标签大小以适应任何屏幕尺寸

旋转UIView并使其更改视图大小以适应相对于旋转的空间

自动布局中的 UIButton 动态宽度

查找由 UIStackView swift 调整的视图的大小