Текст не вертикально центрирован в UILabel
Я создал ярлык со следующим кодом:
func setupValueLabel() {
valueLabel.numberOfLines = 1
valueLabel.font = UIFont(name: "Avenir-Black", size: 50)
valueLabel.adjustsFontSizeToFitWidth = true
valueLabel.clipsToBounds = true
valueLabel.backgroundColor = UIColor.greenColor()
valueLabel.textColor = valuesColor
valueLabel.textAlignment = NSTextAlignment.Center
}
Я действительно не понимаю, почему, но ярлык не имеет вертикальной ориентации:
![Label not centered]()
Нужно ли мне делать что-то конкретное, чтобы оно могло быть сосредоточено?
Ответы
Ответ 1
Проблема в том, что размер шрифта сокращается с помощью adjustsFontSizeToFitWidth = true
, но он не регулирует lineHeight
автоматически. Это остается для оригинального размера шрифта, который составляет 50
.
По умолчанию текст выравнивается по своей базовой линии. Вы можете настроить его с помощью свойства baselineAdjustment
.
В вашем случае вам следует установить для него значение UIBaselineAdjustment.alignCenters
.
valueLabel.baselineAdjustment = .alignCenters
Ответ 2
Благодаря @rintaro, он работает окончательно.
Еще одна вещь для моего случая, это не сработало, потому что я устанавливал ByWordWrapping
. Я должен был установить lineBreakMode
как ByClipping
.
Ответ 3
Swift 4.2
valueLabel.textAlignment = .center