titleView элемента навигации перемещен влево? - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть приложение с левым (гамбургер) navigationItem.leftBarButtonItem, и мы установили titleView на lo go компании. Проблема в том, что они хотят вот go рядом с гамбургером. Кнопка гамбургера установлена ​​в раскадровке ViewController, а lo go программно, например:

let logo = UIImage(named: "logo.png")
let imageView = UIImageView(image:logo)
imageView.frame = CGRect(x: 0, y: 0, width: 120, height: 60)
navigationItem.titleView = imageView

Есть ли способ переместить ее влево?

ОБНОВЛЕНИЕ: Что касается предложений по использованию leftBarButtonItems

Я сделал это в другом UIViewController, и результат оказался не таким, как я ожидал. Вот код:

let logo    = UIImage(named: "logo")!
let karambaButton   = UIBarButtonItem(image: logo,  style: .plain, target: self, action: nil)
let backBTN = UIBarButtonItem(image: UIImage(named: "back"), style: .plain, target: navigationController, action: #selector(UINavigationController.popViewController(animated:)))

navigationItem.leftBarButtonItems = [backBTN, logoButton]

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

enter image description here

(Темный блок - это изображение, я пришлось скрыть это, потому что это клиент)

Ответы [ 3 ]

2 голосов
/ 06 февраля 2020

Вы можете установить несколько левых кнопок панели, набрав:

navigationItem.leftBarButtonItems = [barItem1, barItem2]

То же с правой стороной. :)

0 голосов
/ 06 февраля 2020

Вы также можете установить автоматический макет программно.

    imageView.translatesAutoresizingMaskIntoConstraints = false
    let horizontalConstraint = imageView.leadingAnchor.constraint(equalTo: hamburgerButton.trailingAnchor, constant: 10)
    let verticalConstraint = newView.centerYAnchor.constraint(equalTo: hamburgerButton.centerYAnchor)
    let widthConstraint = newView.widthAnchor.constraint(equalToConstant: 120)
    let heightConstraint = newView.heightAnchor.constraint(equalToConstant: 120)
    imageView.addConstraints([horizontalConstraint, verticalConstraint, widthConstraint, heightConstraint])
0 голосов
/ 06 февраля 2020

UINavigationItem имеет свойство с именем leftBarButtonItems.

Поместите свой lo go imageView в свойство customView объекта UIBarItem и измените его размер правильно , и все будет готово. Просто добавьте его в массив вместе с кнопкой гамбургера.

отредактировано для добавления - попробуйте использовать пользовательское представление, а именно:

if let logo = UIImage(named: "logo") {

  let imageView = UIImageView(image:logo)

  let karambaButton = UIBarButtonItem(customView: imageView)

  let backBTN = UIBarButtonItem(image: UIImage(named: "back"), style: .plain, target: navigationController,
action: #selector(UINavigationController.popViewController(animated:)))

  navigationItem.leftBarButtonItems = [backBTN, logoButton]

}
...