Estoy usando una vista de selector para permitir al usuario elegir el tema de color para toda la aplicación.
Estoy planeando cambiar el color de la barra de navegación, el fondo y posiblemente la barra de pestañas (si eso es posible).
He estado investigando cómo hacer esto, pero no puedo encontrar ningún ejemplo de Swift. ¿Podría alguien darme un ejemplo del código que necesitaría usar para cambiar el color de la barra de navegación y el color del texto de la barra de navegación?
La Vista del selector está configurada, solo estoy buscando el código para cambiar los colores de la interfaz de usuario.
fuente
Aquí hay algunas personalizaciones de apariencia muy básicas que puede aplicar en toda la aplicación:
UIAppearance
Puede leer más sobre API en Swift aquí: https://developer.apple.com/documentation/uikit/uiappearancefuente
Actualizado para Swift 3, 4, 4.2, 5+
Swift 4
Swift 4.2, 5+
También puede consultar aquí: https://github.com/hasnine/iOSUtilitiesSource
fuente
Simplemente pegue esta línea
didFinishLaunchingWithOptions
en su código.fuente
Dentro de AppDelegate , esto ha cambiado globalmente el formato de la barra de navegación y elimina la línea de fondo / borde (que es un área problemática para la mayoría de las personas) para darle lo que creo que usted y otros están buscando:
Entonces puedes configurar un Constants.swift archivo , y está contenido una estructura de Estilo con colores y fuentes, etc. Luego puede agregar un TableView / pickerView a cualquier ViewController y usar la matriz "availableThemes" para permitir al usuario cambiar themeColor.
Lo bueno de esto es que puede usar una referencia en toda su aplicación para cada color y se actualizará en función del "Tema" seleccionado por el usuario y sin uno, el valor predeterminado es theme1 ():
fuente
Para hacer esto en storyboard (Inspector del generador de interfaces)
Con la ayuda de
IBDesignable
, podemos agregar más opciones a Interface Builder InspectorUINavigationController
y ajustarlas en el guión gráfico. Primero, agregue el siguiente código a su proyecto.Luego simplemente configure los atributos para el controlador de navegación en el guión gráfico.
Este enfoque también se puede usar para administrar el color del texto de la barra de navegación del guión gráfico:
fuente
Swift 4:
Código que funciona perfectamente para cambiar la apariencia de la barra de navegación a nivel de aplicación.
¡Feliz codificación!
fuente
trabajó para mi
fuente
SWIFT 4 - Transición suave (la mejor solución):
Si se está moviendo hacia atrás desde un controlador de navegación y tiene que establecer un color diferente en el controlador de navegación que presionó desde el que desea usar
en lugar de ponerlo en la vista Aparecerá para que la transición sea más limpia.
SWIFT 4.2
fuente
En Swift 4
Puede cambiar el color de la barra de navegación. Solo use este fragmento de código a continuación en
viewDidLoad()
Color de la barra de navegación
Color de texto de la barra de navegación
Para iOS 11 Large Title Navigation Bar , debe usar la
largeTitleTextAttributes
propiedadfuente
La
appearance()
función no siempre funciona para mí. Entonces prefiero crear un objeto NC y cambiar sus atributos.Además, si desea agregar una imagen en lugar de solo texto, eso también funciona
fuente
Utilice la API de apariencia y el color barTintColor.
fuente
iOS 8 (rápido)
fuente
Si tiene un controlador de navegación personalizado, puede usar el fragmento de código anterior. Entonces, en mi caso, he usado las siguientes piezas de código.
Swift 3.0, versión XCode 8.1
Texto de la barra de navegación:
Es muy útil las conversaciones.
fuente
Actualización de Swift 4, iOS 12 y Xcode 10
Solo pon una línea adentro
viewDidLoad()
fuente
En Swift 2
Para cambiar el color en la barra de navegación,
Para cambiar el color en la barra de navegación del elemento,
o
fuente
Swift 3
Esto configurará el color de la barra de navegación como el color de la barra de Facebook :)
fuente
Swift 3 y Swift 4 Compatible Xcode 9
Una mejor solución para esto es hacer una clase para barras de navegación comunes
Tengo 5 controladores y cada título de controlador se cambia a color naranja. Como cada controlador tiene 5 controladores de navegación, tuve que cambiar cada color del inspector o del código.
Así que hice una clase en lugar de cambiar cada una de las barras de navegación del código, simplemente asigné esta clase y funcionó en los 5 controladores. Solo tiene que asignar esta clase a cada controlador y eso es todo.
fuente
iOS 10 Swift 3.0
Si no le importa a los marcos de uso veloces luego nos UINeraida a fondo el cambio de navegación como
UIColor
oHexColor
oUIImage
y el cambio de navegación de texto botón de retroceso mediante programación, cambiar el color del texto completo forground.por
UINavigationBar
fuente
Swift 3
Un forro simple que puedes usar en
ViewDidLoad()
fuente
Esta versión también elimina la línea de sombra de 1px debajo de la barra de navegación:
Swift 5: Ponga esto en su AppDelegate didFinishLaunchingWithOptions
fuente
Tenía que hacer
de lo contrario, el color de fondo no cambiaría
fuente
Primero configure la propiedad isTranslucent de navigationBar en false para obtener el color deseado. Luego cambie el color de la barra de navegación de esta manera:
fuente
Asegúrese de establecer el estado del botón para .normal
PS iOS 12, Xcode 10.1
fuente
topItem
solución. Es frustrante la cantidad de cambios que Apple continúa haciendo en la forma en que se aplican los estilos a la navegación.simplemente llame a esta extensión y pase el color, cambiará automáticamente el color de la barra de navegación
en la vista didload o en viewwill aparecerá llamada
self.navigationController? .setNavigationBarColor (color: <# T ## UIColor #>)
fuente
fuente
Estoy escribiendo esto para aquellos que todavía tienen problemas con las soluciones aquí.
Estoy usando Xcode versión 11.4 (11E146). El que trabaja para mí es:
¡PERO !, si configura el barTintColor en el guión gráfico a cualquier otro valor que no sea "predeterminado", estas 2 líneas de código no tendrán efecto.
Por lo tanto, tenga cuidado y vuelva a establecer el valor predeterminado barTintColor en Storyboard. Oh Apple ...
fuente
Agregue estas líneas a su AppDelegate dentro de la función didFinishLaunchingWithOptions:
esta línea es para el fondo de su barra de navegación.
esta línea es si su no es Translúcido a falso, mostrará un color blanco en la navegación.
esta línea es para tus textos e íconos en la barra de navegación
esto nos lleva a bajar todo a su barra de navegación.
fuente