堆栈视图,折叠 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 并使用默认设置一起使用。
我有一个带有三个嵌套标签的垂直 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 并使用默认设置一起使用。