UIStackView 中标签的内容拥抱和压缩问题设置

Posted

技术标签:

【中文标题】UIStackView 中标签的内容拥抱和压缩问题设置【英文标题】:Trouble settings content hugging and compression for labels in UIStackView 【发布时间】:2020-12-10 04:23:35 【问题描述】:

我在了解内容压缩和标签阻力方面遇到了问题。考虑:

let label1 = UILabel()
label1.text = "hello"
label1.textColor = .white
label1.backgroundColor = .red

let label2 = UILabel()
label2.text = "bye"
label2.textColor = .white
label2.backgroundColor = .blue

这些标签位于水平堆栈视图中。

let stackView = UIStackView(arrangedSubviews: [label1, label2])

这给出了以下内容:

我希望红色标签包含内容并且从不压缩。我添加这个:

label1.setContentHuggingPriority(.defaultHigh, for: .horizontal)

到目前为止看起来不错,但是当蓝色标签中的文本太长时,我得到了这个:

我尝试设置label1.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal),但没有任何区别。

我在这里做错了什么?希望获得有关如何解决此问题的建议。

谢谢

【问题讨论】:

对不起,这是一个堆栈视图,更新了问题 如果你想让红色标签不被压缩,只需给它最小宽度并添加到堆栈视图。 【参考方案1】:

defaultHigh 在这种情况下没有足够的优先级。改为将其设置为 required

label1.setContentHuggingPriority(.required, for: .horizontal)
label1.setContentCompressionResistancePriority(.required, for: .horizontal)

【讨论】:

以上是关于UIStackView 中标签的内容拥抱和压缩问题设置的主要内容,如果未能解决你的问题,请参考以下文章

匹配python中字符串中标签的多个实例内的所有内容

怎么实现MindMapper 16中标签的添加

表格行中div中标签的水平和垂直对齐

我如何改变primefaces中标签的方向?

更改自定义 UICollectionCell 中标签的边框宽度

表单设计中标签的布局方式有哪些