UINavigationBar - prefersLargeTitles - Как установить изображение слева от заголовка? - PullRequest
0 голосов
/ 09 ноября 2018

В следующей статье показано, как добавить изображение справа от заголовка навигации. https://blog.uptech.team/how-to-build-resizing-image-in-navigation-bar-with-large-title-8ba2e8bcb840

Я хотел бы добавить изображение слева от заголовка панели навигации. Чтобы добиться этого, я установил leftAnchor вместо правого якоря для imageView, как показано ниже.

imageView.leftAnchor.constraint(equalTo: navigationBar.leftAnchor, constant: Const.ImageRightMargin)

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

Примечание:

  1. Я видел другие вопросы на SO о добавлении изображений в заголовок посмотреть, но этот вопрос специально запрашивает информацию о добавление изображения слева от заголовка. Поэтому этот вопрос не является дубликатом.
  2. Я знаю, что могу установить собственный вид заголовка, как показано ниже, но я не хотите потерять настройку prefersLargeTitles на панели навигации.

    self.navigationItem.titleView = customTitleView

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 09 ноября 2018
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let img = UIImage.init(named: "imgName")

        let imgView = UIImageView(frame: CGRect(x: 0, y: 0, width: 30, height: 30))

        imgView.image = img!

        imgView.contentMode = .scaleAspectFit

        let item = UIBarButtonItem.init(customView: imgView)

        let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .fixedSpace, target: nil, action: nil)

        navigationItem.leftBarButtonItems = [negativeSpacer, item]

    }
}

Результат

enter image description here

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

let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .fixedSpace, target: nil, action: nil)

с этой строкой

let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .fixedSpace, target: self, action: #selector(go))

И поместите это

@objc func go() {

    print("go")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...