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
]
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
}