Tengo un UINavigationController
valor predeterminado de es navigationBar.prefersLargeTitles = true
.
Estoy cambiando eso a false
cuando entro push
en una nueva escena, vamos a llamarlo ( DetailsViewController
), cambiándolo a viewWillDisappear
.
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.navigationBar.prefersLargeTitles = false
}
Ahora en DetailsViewController
que estoy usando willMove(to parent:)
.
override func willMove(toParent parent: UIViewController?) {
navigationController?.navigationBar.prefersLargeTitles = true
}
Para volver a la transición a títulos grandes.
Observe las instantáneas adjuntas de cómo lo hace iOS 13 con cómo lo hace iOS 12 , teniendo en cuenta que iOS 12 es el comportamiento correcto.
iOS 13 :
iOS 12 :
ios
swift
uinavigationcontroller
uinavigationbar
Mohmmad S
fuente
fuente
.prefersLargeTitles
para nada cuando empuja un controlador de vista detallada a la pila de navegación, usará automáticamente un título pequeño y luego volverá al grande una vez que regrese al controlador de vista raíz, que yo sepalargeTitleDisplayMode
a .automatic
y deberías obtener la transición deseada.navigationController?.navigationItem.largeTitleDisplayMode = .automatic
Respuestas:
Lo que estás haciendo siempre estuvo mal. Se debe ajustar
prefersLargeTitles
a latrue
vez para la barra de navegación y nunca volver a tocar.La forma de cambiar lo que hace cada controlador de vista sobre títulos grandes como parece es que ese controlador de vista establece su propio
navigationItem
(en suviewDidLoad
) para tener el deseadolargeTitleDisplayMode
. Entonces, si el primer vc tiene.always
y el segundo tiene.never
todo, será suave.fuente
Tuve el mismo problema y tuve que colocar un NavigationItem en el segundo guión gráfico de ViewController. Mi NavigationItem estaba siendo creado automáticamente por el segue y su
prefersLargeTitle
en elviewDidLoad()
que no se terminó de crear antes de la vista apareció. Agregar un elemento de navegación al guión gráfico solucionó este problema y me permitió configurarloprefersLargeTitle
en el menú de propiedades del guión gráfico.fuente
En mi caso, este problema estaba ocurriendo durante un segue a un controlador de vista que es hijo de un
UITabBarController
. EstablecerlargeTitleDisplayMode
el controlador de vista secundario no fue suficiente para corregir este error.He resuelto el problema agregando un elemento de navegación a la escena UITabBarController y configurando
largeTitleDisplayMode
como.never
allí.fuente