垂直对齐具有不同字体大小的标签,Swift

时间:2017-10-21 10:13:22

标签: ios swift uilabel

我想垂直对齐不同字体大小的标签,这样它们就会出现在共同的基线上。

在这种情况下,我在stackview中嵌入了三个标签,如下图所示。数字30似乎明显偏离基线,而文字' In'和' MINUTES'似乎也被抵消了,但并不重要。我怎样才能让这三个人坐在同一个基线上?

enter image description here

我正在以编程方式创建标签和堆栈视图,如下所示:

var timeStackView           : UIStackView!
var timeIndication          : UILabel!
var time                    : UILabel!
var unitsOrTimeZone         : UILabel!

timeStackView = UIStackView()
timeStackView.addArrangedSubview(timeIndication)
timeStackView.addArrangedSubview(time)
timeStackView.addArrangedSubview(unitsOrTimeZone)
timeStackView.alignment = .bottom      // bottom alignment
timeStackView.axis = .horizontal
timeStackView.distribution = .equalSpacing
timeStackView.spacing = 10.0

所有三个标签的创建方式与下图所示类似,但文字不同:

timeIndication                      =   UILabel()
timeIndication.textAlignment        =   .center
timeIndication.text                 =   "In"
timeIndication.font                 =   timeIndication.font.withSize(14)
timeIndication.baselineAdjustment   = .alignBaselines // baselineAdjustment

我尝试了timeStackView.alignment = .bottomtimeIndication.baselineAdjustment = .alignBaselines,但他们似乎无法工作。

1 个答案:

答案 0 :(得分:5)

我还没有尝试过,但是根据UIStackView文档,你应该将堆栈视图的对齐方式设置为.lastBaseline.firstBaseline,具体取决于你想要多线的方式要处理的标签。