我有一个带有三个嵌套标签的垂直StackView
标签中的内容是动态的。我希望堆栈视图让3个项目彼此相邻,彼此之间的间距非常小。这样的示例值会读取类似“+ $ 45.67”的内容,但似乎Stack View下的所有分发选项都无法完成此操作。每个标签下的单独字体和颜色设置是不同的,所以我不能简单地使用1个标签。
无论如何要说垂直堆栈视图中的每一列只能占用嵌套Label占用的空间。
答案 0 :(得分:0)
您需要适当地设置内容拥抱和标签的文本对齐方式。
因此,如果整个事情要正确对齐,你可以这样做:
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应该压缩哪些UILabel首先拥抱它的内容。
这应该可以将UIStackView设置为水平并使用默认设置。