ios iphone uinavigationbar xcode9-beta ios11

Use el título de barra de navegación aumentado en iOS 11



iphone uinavigationbar (6)

Dado que los títulos grandes están disponibles desde iOS 11, también debe verificar la versión de iOS:

if #available(iOS 11.0, *) { navigationController?.navigationBar.prefersLargeTitles = true }

iOS 11 Beta 1 utiliza el título de barra de navegación aumentado para casi todas las aplicaciones del sistema (comenzó a hacerlo en iOS 10 y la aplicación Música). Me pregunto si Apple tiene una API pública para este próximo iOS 11, o si seguirá siendo privada por ahora.

El comportamiento es que el título tiene un tamaño de fuente aumentado, se deja alineado y se moverá a la barra de navegación una vez que el usuario se desplace hacia abajo. Adjunté algunas pantallas que muestran este comportamiento en la aplicación Mensajes aquí:

Aunque hasta ahora no pude encontrar ninguna referencia en UINavigationController y UINavigationBar , ¡tal vez alguien conozca más detalles!


El único cambio que se realiza en la API UINavigationBar para iOS 11 es que solo prefersLargetitles . mira here

Puede hacerlo en sus propias aplicaciones con un pequeño cambio: marque "Prefiere títulos grandes" para su barra de navegación en IB, o si prefiere hacerlo en código usando

navigationController?.navigationBar.prefersLargeTitles = true

Editar

Si necesita cambiar los atributos de texto del título grande, debe usar la nueva propiedad UINavigationBar en UINavigationBar :

UINavigationBar.appearance().largeTitleTextAttributes = [ NSForegroundColorAttributeName: UIColor.white ]

Actualización para Swift 4.2:

Como NSForegroundColorAttributeName ha cambiado de nombre a NSAttributedString.Key.foregroundColor , use:

UINavigationBar.appearance().largeTitleTextAttributes = [ NSAttributedString.Key.foregroundColor: UIColor.black ]


Simplemente marque "Prefiere títulos grandes" en el inspector de atributos de la barra de navegación


UINavigationBar tiene una propiedad prefersLargeTitles: Bool . Documentos aquí .

class UINavigationBar { var prefersLargeTitles: Bool }

UINavigationItem tiene una propiedad largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode . Documentos aquí .

class UINavigationItem { var largeTitleDisplayMode: LargeTitleDisplayMode }

Ambos pueden modificarse en el Creador de interfaces.

Para activar este comportamiento, configure navigationController.navigationBar.prefersLargeTitles en true . Luego puede controlar cada controlador de vista individual en la pila del controlador de navigationItem.largeTitleDisplayMode configurando navigationItem.largeTitleDisplayMode .

Las pautas generales de diseño de Apple son que los títulos grandes no deben usarse en todas partes (por ejemplo, la aplicación Clock no los usa), y generalmente se prefiere que solo el primer nivel del controlador de navegación use los títulos grandes. Sin embargo, estas son solo pautas generales.

Se introducen títulos grandes en el video de Novedades en Cocoa Touch (7:37).


if #available(iOS 11.0, *) { self.navigationController?.navigationBar.prefersLargeTitles = true self.navigationItem.largeTitleDisplayMode = .always } else { // Fallback on earlier versions }

Tenga en cuenta que hay algunos errores en la beta 1 que hacen que el título grande solo aparezca cuando se desplaza manualmente hacia arriba.


if #available(iOS 11.0, *) { navigationController?.navigationBar.prefersLargeTitles = true navigationController?.navigationBar.topItem?.title = "Hello" navigationController?.navigationItem.largeTitleDisplayMode = .automatic let attributes = [ NSAttributedStringKey.foregroundColor : UIColor.red, ] navigationController?.navigationBar.largeTitleTextAttributes = attributes } else { // Fallback on earlier versions }