Подтвердить что ты не робот

Текст не вертикально центрирован в 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

Нужно ли мне делать что-то конкретное, чтобы оно могло быть сосредоточено?

4b9b3361

Ответ 1

Проблема в том, что размер шрифта сокращается с помощью adjustsFontSizeToFitWidth = true, но он не регулирует lineHeight автоматически. Это остается для оригинального размера шрифта, который составляет 50.

По умолчанию текст выравнивается по своей базовой линии. Вы можете настроить его с помощью свойства baselineAdjustment.

В вашем случае вам следует установить для него значение UIBaselineAdjustment.alignCenters.

valueLabel.baselineAdjustment = .alignCenters

Ответ 2

Благодаря @rintaro, он работает окончательно.

Еще одна вещь для моего случая, это не сработало, потому что я устанавливал ByWordWrapping. Я должен был установить lineBreakMode как ByClipping.

Ответ 3

Swift 4.2

valueLabel.textAlignment = .center