Плавный переход при смене панели навигации "prefersLargeTitles" - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть контроллер вида, который pushed на стек навигации. Стек имеет navigationBar.prefersLargeTitles = true, в то время как этот новый контроллер представления имеет navigationBar.prefersLargeTitles = false. Я достигаю этого, используя следующий код в контроллере представления, который помещается в стек:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.navigationBar.prefersLargeTitles = false
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationController?.navigationBar.prefersLargeTitles = true
}

Однако, когда я возвращаюсь назад к представлению контроллера представления, изменение в навигационной панели от navigationBar.prefersLargeTitles = false до navigationBar.prefersLargeTitles = true немного затруднительно. Есть ли способ сделать это более гладким?

Большое спасибо

1 Ответ

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

Вместо непосредственного изменения предпочтения через контроллер навигации, вы должны изменить поведение с помощью элемента навигации конкретного контроллера представления, на который вы хотите повлиять.

class ViewControllerA: UIViewController {

    override func viewDidLoad() {

        super.viewDidLoad()

        navigationItem.largeTitleDisplayMode = .always
    }
}

class ViewControllerB: UIViewController {

    override func viewDidLoad() {

        super.viewDidLoad()

        navigationItem.largeTitleDisplayMode = .never
    }
}

Вы можете удалить строки в viewWillAppear и viewWillDisappear.

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