Как правильно масштабировать UIButton и текст заголовка? - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь создать кнопки с заголовками, которые бы изменяли их ширину, высоту и размер шрифта текста заголовка в зависимости от устройства iOS (автоматическое масштабирование).Я использую Xcode 10. Кодирование Swift.

Вот простой пример: я создал в IB красную кнопку, которая покрывает весь экран (верхний, нижний, ведущий и конечный ограничения установлены в 0) с заголовком "Кнопка «в центре» с размером шрифта, установленным на 350. Название iPad будет идеально соответствовать ширине 12,9-дюймового iPad (см. Рис.).

IB

Я ввел код FitToWidth следующим образом:

class ViewController: UIViewController {

@IBOutlet weak var button: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    button.titleLabel?.adjustsFontSizeToFitWidth = true
    button.titleLabel?.minimumScaleFactor = 0.1
}

Когда я запускаю код на устройстве с более низким разрешением экрана, чем у iPad 12,9 ", я вижу, что заголовок кнопки масштабируется и соответствует ширине экрана, но смещается вниз (см. Фото).

моделирование iPad 12.9

iPad 12.9 simulation

моделирование iPhone SE

iPhone SE simulation

Что мне не хватает?

Мне нужно, чтобы текст заголовка располагался в центре кнопки, как я это делал в IB.Я пробовал различные ограничения, примененные к кнопке, но ничего не получилось.

Ответы [ 2 ]

0 голосов
/ 29 сентября 2018

Похоже, я нашел решение.

Я только что добавил такую ​​строку в свой код в viewDidLoad: button.titleLabel?.baselineAdjustment = UIBaselineAdjustment.alignCenters

Теперь заголовок находится в середине кнопки для любой iOSустройство:

iPhone SE simulation iPad Air 2 simulation

0 голосов
/ 29 сентября 2018

Измените размер кнопки, чтобы подогнать заголовок под каждый размер экрана

Попробуйте это в viewDidAppear ()

button.sizeToFit() 
...