堆栈视图,将空间折叠到内容
Posted
技术标签:
【中文标题】堆栈视图,将空间折叠到内容【英文标题】:Stack View, Collapse Space to Content 【发布时间】:2018-01-07 20:46:35 【问题描述】:我有一个带有三个嵌套标签的垂直 StackView
堆栈视图 PlusMinus(标签) 货币(标签) 金额(标签)标签中的内容是动态的。我希望堆栈视图使 3 个项目彼此相邻,彼此之间的间距非常小。这样一个示例值将读取类似“+ $ 45.67”的内容,但似乎堆栈视图下的所有分发选项都不能实现这一点。每个标签下的个别字体和颜色设置是不同的,所以我不能简单地使用 1 个标签。
有没有说垂直堆栈视图中的每一列只能占用嵌套Label占用的空间。
【问题讨论】:
您确实应该发布有关您尝试过的更多信息,但我建议您需要考虑适当地设置 UILabel 的内容拥抱和压缩阻力并设置文本对齐方式。 【参考方案1】:您需要适当地设置内容拥抱和标签的文本对齐方式。
所以如果整个事情要右对齐,你可以这样做:
self.signLabel.setContentHuggingPriority(.init(rawValue: 300), for: .horizontal)
self.currencyLabel.setContentHuggingPriority(.init(rawValue: 400), for: .horizontal)
self.valueLabel.setContentHuggingPriority(.init(rawValue: 500), for: .horizontal)
self.signLabel.textAlignment = .right
self.currencyLabel.textAlignment = .right
self.valueLabel.textAlignment = .right
如果要左对齐,请执行以下操作:
self.signLabel.setContentHuggingPriority(.init(rawValue: 500), for: .horizontal)
self.currencyLabel.setContentHuggingPriority(.init(rawValue: 400), for: .horizontal)
self.valueLabel.setContentHuggingPriority(.init(rawValue: 300), for: .horizontal)
self.signLabel.textAlignment = .left
self.currencyLabel.textAlignment = .left
self.valueLabel.textAlignment = .left
(您可以更改数字,只要它们保持升序即可)。
这样做是为了给布局系统提供线索,让他们知道哪些 UILabel 应该先压缩以拥抱它的内容。
这应该适用于设置为水平并使用默认设置的 UIStackView。
【讨论】:
我实际上只需要在故事板视图中编辑这个,不需要代码。谢谢。 对不起,我忘了说这一切都可以在故事板中完成。仍然很高兴现在一切正常。以上是关于堆栈视图,将空间折叠到内容的主要内容,如果未能解决你的问题,请参考以下文章