Recientemente actualicé mi Xcode a 11.4. Cuando ejecuto la aplicación en el dispositivo, noté que todos los títulos de mis elementos de navegación se volvieron completamente negros cuando se configuraron desde el guión gráfico.
No puede cambiar ni desde el código, la siguiente línea de código ya no funciona
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]
Solo lo hago funcionar usando algunas cosas de iOS 13 UINavigationBarAppearance
@available(iOS 13.0, *)
private func setupNavigationBar() {
let app = UINavigationBarAppearance()
app.titleTextAttributes = [.foregroundColor: UIColor.white]
app.backgroundColor = Constants.Color.barColor
self.navigationController?.navigationBar.compactAppearance = app
self.navigationController?.navigationBar.standardAppearance = app
self.navigationController?.navigationBar.scrollEdgeAppearance = app
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]
}
¿Alguien puede explicarme por qué? Este es un error crucial, o alguna nueva característica oculta?
ios
swift
xcode
navigationbar
Tudor Popa
fuente
fuente
Respuestas:
Apple finalmente lo arregló en la versión 11.4.1
https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_1_release_notes
fuente
Esto me lo arregló, usando UINavigationBarAppearance en su lugar, desde: Personalizar la barra de navegación de su aplicación
Nota: Subclasifiqué UINavigationController , y esto se llamó desde la anulación de viewWillAppear .
... o para AppDelegate , en toda la aplicación:
... para AppDelegate, en toda la aplicación, en Objective-C:
fuente
UINavigationBarAppearance()
y sin ninguna razón en el antiguo Xcode no teníamos que depender de él, pero desde Xcode 11.4 debe usarUINavigationBarAppearance()
o el color del título siempre será de color negro.appearance.largeTitleTextAttributes
para grandes títulosEn el guión gráfico, para su Controlador de navegación, cambie el "Tinte de barra" a su valor "Predeterminado", luego, en su código, puede cambiarlo como lo haría normalmente.
fuente
No estoy seguro si es un error o no.
La forma en que lo arreglamos es configurando el "Estilo de barra de estado" en contenido oscuro o claro en la configuración del proyecto. Esto forzará el color del texto de la barra de estado de una determinada manera en lugar de determinarse en función de los dispositivos en modo claro u oscuro.
Además, debe establecer el valor "Ver la apariencia de la barra de estado basada en el controlador" en "NO" en su Info.plist. sin ese valor, se anulará el "Estilo de barra de estado".
A continuación, cree un controlador de navegación personalizado e impleméntelo en sus guiones gráficos.
* Los colores están configurados para que pueda verlos claramente trabajando.
Descubrí que era mejor configurar el código en ViewDidLoad en lugar de ViewDidAppear porque mis colores no se configuraban en la carga inicial, solo después de navegar hacia atrás y volver a cargar.
También descubrí que este problema podría estar relacionado con el "Tinte de barra" de una barra de navegación. cuando intentamos resolverlo por primera vez, configuramos el "Tinte de barra" por defecto y eso también pareció resolver el error. Sin embargo, lo hizo para que no pudiéramos obtener el color de fondo NavBar que queríamos. Entonces, en mis guiones gráficos, me aseguré de establecer este valor por defecto solo por si acaso.
Espero eso ayude
fuente
no es necesario el workaround.it es un error en Xcode Interface Builder. Actualización de lanzamiento de Apple para Xcode 11.4.1
de las notas de la versión para desarrolladores de Apple
https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_1_release_notes
fuente
Similar a la respuesta de Stu Carney el 25/3, agregué algunos detalles más de implementación.
Cree una subclase de UINavigationController . Agregue lo siguiente para verWillAppear:
A continuación, anule preferredStatusBarStyle :
Si desea actualizar la barra de navegación y la barra de estado dinámicamente, como desde un método UISwitch IBAction o selector, agregue lo siguiente:
Además, asegúrese de configurar todas sus barras de navegación y botones de barra con los colores predeterminados en IB. Xcode parece tener un error en el que los colores IB anulan los colores establecidos programáticamente.
fuente
En mi caso, después de actualizar Xcode de 11.3 a 11.4, se produjo este error. Entonces tengo que cambiar mi código para soplar para establecer una imagen como fondo en la barra de navegación.
fuente