堆栈视图,折叠 Space 到内容

Stack View, Collapse Space to Content

我有一个带有三个嵌套标签的垂直 StackView

标签中的内容是动态的。我希望堆栈视图让 3 个项目彼此相邻,彼此之间的间距非常小。这样一个示例值将显示为“+ $ 45.67”之类的内容,但似乎 Stack View 下的所有 Distribution 选项都无法实现这一点。每个标签下的字体和颜色设置都不一样,所以我不能简单地使用1个标签。

有没有说垂直堆栈视图中的每一列只能占用多少 space 被嵌套标签占用。

您需要适当地设置标签的内容拥抱和文本对齐方式。

因此,如果整个事情要右对齐,您可以这样做:

    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 并使用默认设置一起使用。