Как вы вертикально выровняете заголовки двух разных кнопок с разными размерами заголовков?

-3

Кнопка next рядом с именем пользователя кажется вертикально центрированной, тогда как я хочу выровнять базовые линии обоих названий.

Я хочу выровнять это программно.

Изображение 174551

  • 0
    Вы можете быть более ясным? Вы пытаетесь выровнять текст на кнопках или сами кнопки? Вы пытаетесь выровнять их по низу? А что такое Asdfasdf? Также было бы хорошо, если бы вы могли опубликовать код :)
  • 0
    Благодарю. Я пытаюсь выровнять текст (заголовок) по самим кнопкам. Похоже, что заголовок кнопки «Follow» расположен по центру, а не выровнен по низу.
Показать ещё 1 комментарий
Теги:
uibutton

1 ответ

3
Лучший ответ

предположим, что у вас нет фиксированной ширины и высоты как вашей метки, так и кнопки.

Тогда ваш код будет выглядеть следующим образом. Просто упомянем, что я использую LayoutAnchor, так как это легко.

func autolayoutTitle() {
    let label = UILabel()
    label.backgroundColor = UIColor.red
    label.textColor = UIColor.white
    label.text = "Nafeez Zawahir"
    label.textAlignment = .right
    view.addSubview(label)
    label.translatesAutoresizingMaskIntoConstraints = false
    //label.widthAnchor.constraint(equalToConstant: 150).isActive = true
   // label.heightAnchor.constraint(equalToConstant: 40).isActive = true
    label.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 40).isActive = true
    label.topAnchor.constraint(equalTo: view.topAnchor, constant: 100).isActive = true

    let button = UIButton()
    //button.titleLabel?.text = "Follow"
    button.setTitle("Follow", for: .normal)
    button.setTitleColor(UIColor.white, for: .normal)
    button.backgroundColor = UIColor.darkGray
    view.addSubview(button)
    button.translatesAutoresizingMaskIntoConstraints = false
   // button.widthAnchor.constraint(equalToConstant: 100).isActive = true
   // button.heightAnchor.constraint(equalToConstant: 50).isActive = true
    button.leftAnchor.constraint(equalTo: label.rightAnchor, constant: 2).isActive = true


    button.lastBaselineAnchor.constraint(equalTo: label.lastBaselineAnchor).isActive = true
   // button.lastBaselineAnchor.constraint(equalTo: label.lastBaselineAnchor, constant: -10).isActive = true


}

И выход:

Изображение 174551

Но если у вас есть фиксированная ширина и высота вашего ярлыка, а также ваша кнопка, то вам нужно настроить привязку базовой линии к базовой линии с привязкой к базовой метке, которая зависит от высоты надписи.

Скажем, у вас есть высота ярлыка 40, как это.

label.heightAnchor.constraint(equalToConstant: 40).isActive = true

Тогда привязка базовой линии к вашей кнопке должна быть такой.

button.lastBaselineAnchor.constraint(equalTo: label.lastBaselineAnchor, constant: -10).isActive = true

Ниже приведен код:

func autolayoutTitle() {
        let label = UILabel()
        label.backgroundColor = UIColor.red
        label.textColor = UIColor.white
        label.text = "Nafeez Zawahir"
        label.textAlignment = .right
        view.addSubview(label)
        label.translatesAutoresizingMaskIntoConstraints = false
        label.widthAnchor.constraint(equalToConstant: 150).isActive = true
        label.heightAnchor.constraint(equalToConstant: 40).isActive = true
        label.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 40).isActive = true
        label.topAnchor.constraint(equalTo: view.topAnchor, constant: 100).isActive = true

        let button = UIButton()
        //button.titleLabel?.text = "Follow"
        button.setTitle("Follow", for: .normal)
        button.setTitleColor(UIColor.white, for: .normal)
        button.backgroundColor = UIColor.darkGray
        view.addSubview(button)
        button.translatesAutoresizingMaskIntoConstraints = false
        button.widthAnchor.constraint(equalToConstant: 100).isActive = true
        button.heightAnchor.constraint(equalToConstant: 50).isActive = true
        button.leftAnchor.constraint(equalTo: label.rightAnchor, constant: 2).isActive = true


       // button.lastBaselineAnchor.constraint(equalTo: label.lastBaselineAnchor).isActive = true
        button.lastBaselineAnchor.constraint(equalTo: label.lastBaselineAnchor, constant: -10).isActive = true


    }

И это результат:

Изображение 174551

  • 0
    спасибо @elk_cloner!
  • 0
    Я надеюсь, что вы принимаете мой ответ.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню