Добавление подпредставления на панель навигации с помощью контроллера поиска - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь добавить пользовательскую кнопку подпредставления на панель навигации, и у меня возникают проблемы с ее размещением в нужном месте. Моя цель состоит в том, чтобы кнопка была центрирована по отношению к заголовку, будь то большой или маленький. Но сейчас я пытаюсь привязать его к нижней части панели навигации. Однако я не могу получить доступ к панели поиска, чтобы правильно добавить ограничения.

Текущий результат

func setupNav() {
    guard let navController = navigationController else { return }
    let navBar = navController.navigationBar

    let settingsButton = UIButton()
    settingsButton.setImage(UIImage(named: "settings-button")?.withRenderingMode(.alwaysTemplate), for: .normal)
    settingsButton.tintColor = .textColor()
    settingsButton.addTarget(self, action: #selector(openSettings), for: .touchUpInside)

    navBar.addSubview(settingsButton)
    settingsButton.anchor(top: nil, left: nil, bottom: navBar.bottomAnchor, right: navBar.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 5, paddingRight: 10, width: 30, height: 30)
}

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

Вам необходимо установить это свойство вашей кнопки, которое заставляет вас добавлять ограничения программным способом:

settingsButton.translatesAutoresizingMaskIntoConstraints = false

Это мой код:

func setupNav() {
    guard let navController = navigationController else { return }
    let navBar = navController.navigationBar

    let button = UIButton()
    button.setTitle("Test", for: .normal)
    button.setTitleColor(.red, for: .normal)
    button.translatesAutoresizingMaskIntoConstraints = false

    button.addTarget(self, action: #selector(openSettings), for: .touchUpInside)

    navBar.addSubview(button)
    navBar.addConstraints([
        NSLayoutConstraint(item: navBar, attribute: .trailing, relatedBy: .equal, toItem: button, attribute: .trailing, multiplier: 1, constant: 20),
        NSLayoutConstraint(item: button, attribute: .centerY, relatedBy: .equal, toItem: navBar, attribute: .centerY, multiplier: 1, constant: 0)
    ])
}

Happy кодирование.

0 голосов
/ 18 апреля 2020

Вы должны иметь доступ к панели поиска, используя

navigationItem.searchController?.searchBar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...