color bar ios uinavigationcontroller ios11

ios - bar - uinavigationitem title color



Cambiar el color de fondo de StatusBar mientras usa un título grande para la barra de navegación en iOS 11 (1)

La forma correcta de establecer el color de fondo de UINavigationBar es usar la propiedad barTintColor .

self.navigationController?.navigationBar.barTintColor = .red

Puedes notar que el color que configuras puede estar un poco descolorido. Como se señala en la documentación:

Este color se convierte en translúcido por defecto a menos que establezca la propiedad isTranslucent en false .

Consulte la referencia barTintColor en developer.apple.com

Intento utilizar la nueva característica de título grande de navigationBar en iOS 11.

Sin embargo, después agregué la siguiente línea:

self.navigationController?.navigationBar.prefersLargeTitles = true

Descubrí que el color de fondo de la barra de navegación cambió a negro.

Así que establecí el color de fondo de nuevo manualmente:

self.navigationController?.setBackgroundColor(UIColor(hexString: 0xFF7E79))

Sin embargo, encontré que el color de fondo de la barra de estado no cambió:

Después de configurar el color de fondo de la barra de estado a través de este código:

guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return statusBar.backgroundColor = UIColor(hexString: 0xFF7E79)

Me da una fea línea negra de 1 píxel como esta entre la barra de estado y la barra de navegación:

Entonces, ¿cuál es la forma correcta de establecer el color de fondo de navigationBar?