Eu tenho um UINavigationController
com o valor padrão dele navigationBar.prefersLargeTitles = true
.
Estou mudando isso para false
quando push
entrar em uma nova cena, vamos chamá-lo ( DetailsViewController
), alterando-o para viewWillDisappear
.
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.navigationBar.prefersLargeTitles = false
}
Agora DetailsViewController
estou usando willMove(to parent:)
.
override func willMove(toParent parent: UIViewController?) {
navigationController?.navigationBar.prefersLargeTitles = true
}
Para voltar para títulos grandes.
Observe os instantâneos anexados de como o iOS 13 faz isso com o iOS 12 , considerando que o iOS 12 é o comportamento correto.
iOS 13 :
iOS 12 :
ios
swift
uinavigationcontroller
uinavigationbar
Mohmmad S
fonte
fonte
.prefersLargeTitles
nada ao empurrar um controlador de exibição de detalhes para a pilha de navegação, ele usará automaticamente um título pequeno e depois voltará para o grande quando voltar ao controlador de exibição raiz, tanto quanto eu seilargeTitleDisplayMode
para .automatic
e você deve obter a transição desejada.navigationController?.navigationItem.largeTitleDisplayMode = .automatic
Respostas:
O que você está fazendo estava sempre errado. Você deve definir
prefersLargeTitles
atrue
uma vez para a barra de navegação e nunca tocá-la novamente.A maneira de alterar o que cada controlador de exibição faz sobre títulos grandes, como parece, é que esse controlador de exibição define seu próprio
navigationItem
(no seuviewDidLoad
) para ter o desejadolargeTitleDisplayMode
. Então, se o primeiro vc tem.always
e o segundo tem.never
tudo será suave.fonte
Eu tive o mesmo problema e tive que colocar um NavigationItem no segundo storyboard do ViewController. Meu NavigationItem estava sendo criado automaticamente pelas segue e o seu
prefersLargeTitle
noviewDidLoad()
não foi criado antes da exibição. A adição de um NavigationItem ao storyboard corrigiu esse problema e permitiu que eu o configurasseprefersLargeTitle
no menu de propriedades do storyboard.fonte
No meu caso, esse problema estava ocorrendo durante uma passagem para um controlador de exibição que é filho de um
UITabBarController
. A configuraçãolargeTitleDisplayMode
no controlador de exibição filho não foi suficiente para corrigir esse bug.Resolvi o problema adicionando um item de navegação à cena UITabBarController e definindo
largeTitleDisplayMode
como.never
lá.fonte