tab bar ios iphone objective-c cocoa-touch uitabbar

ios - uitabbarcontroller swift 4



Cómo cambiar el color de selección de UITabBar (12)

A partir de iOS 8 es tan simple como:

UITabBar.appearance().tintColor = UIColor.redColor()

Necesito cambiar el color de selección de UITabBar del azul predeterminado al rojo. Cómo hacemos esto.


Debido a que UITextAttributeTextColor está en desuso en iOS 7, debe usar:

[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor greenColor]} forState:UIControlStateNormal]; [UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor purpleColor]} forState:UIControlStateSelected];


El SDK no lo hace fácil, pero es técnicamente posible. Apple aparentemente cree que esto es parte de su visión de una apariencia consistente.

UITabBar es una subclase de UIView. Siempre puede subclasificar e implementar su propio -drawRect:

Esta no es una tarea trivial, sin embargo, esencialmente debes volver a implementar la clase desde cero o te arriesgas a algunos efectos secundarios extraños.


En IOS5, UITabBar tiene una propiedad SelectedImageTintColor que hace lo que necesita.


Encontré la solución más fácil:

  1. Seleccione la barra de pestañas en el controlador de la barra

  2. Establecer el color del tinte de la imagen

  3. Establecer el color del tinte

Para referencia, vea la imagen adjunta.


Es extremadamente fácil

Cree una clase personalizada de UITabBarController y en el método -(void)viewDidLoad agregue esta línea:

[[self tabBar] setSelectedImageTintColor:[UIColor greenColor]];


He estado buscando una manera de establecer el color de texto seleccionado de un UITabBarItem y he encontrado un método muerto simple, usando el protocolo UIAppearance.

[UITabBarItem.appearance setTitleTextAttributes:@{ UITextAttributeTextColor : [UIColor greenColor] } forState:UIControlStateNormal]; [UITabBarItem.appearance setTitleTextAttributes:@{ UITextAttributeTextColor : [UIColor purpleColor] } forState:UIControlStateSelected];

¡Disculpe los horribles colores!


Simplemente cambie la siguiente propiedad en Interface Builder para TabBar

Obviamente en mi caso es blanco.


iOS 5.0 soluciona este problema, pero la solución está bajo NDA. Busque UITabBar en su documentación de una manera FÁCIL para hacer lo que desea hacer.


Para lograr el resultado anterior, realice los siguientes pasos.

Paso 1: Agregue las imágenes que desee en Assets.xcassets , y asegúrese de que Render As : Default

Paso 2: selecciona tu objeto UITabBar y configura el color del Image Tint , este color se seleccionará en el color de la pestaña

Paso 3: Seleccione el objeto UITabBar y añada Key Path : unselectedItemTintColor , Type : Color , Value : Choose color for unselected item en Atributos de tiempo de ejecución definidos por el usuario .

Todo listo.


Actualización de septiembre de 2017: Han pasado dos años desde que escribí esta respuesta y, dado que recibe votos acumulativos regularmente, debería decir que esta es probablemente la peor respuesta posible a esta pregunta, es propensa a errores, es probable que se rompa debido a las actualizaciones de iOS, difícil depurar, etc., así que por favor no haga las cosas que he escrito y aplique mejores soluciones, como la subclasificación de UITabBar o UITabBarController. Gracias.

Puede hacer esto configurando un atributo "tintColor" (Key Path) para usted UITabBar.

  1. Seleccione UITabBar en el contorno del documento. ( NO el controlador con el icono amarillo).
  2. Seleccione Identity Inspector en el área de Utilidades.
  3. Haga clic en + en "Atributos de tiempo de ejecución definidos por el usuario".
  4. Agregue una ruta clave "tintColor" de tipo "Color" y el color que desee.

Esto debería hacerlo. Puedes consultarlo en la captura de pantalla a continuación.

Más sobre esto: Hay un atributo "Matiz" en el Inspector de Identidad de UITabBar que creí que haría exactamente lo mismo, pero aparentemente no hace nada. Su valor predeterminado es el color de relleno predeterminado exacto cuando se selecciona un UITabBarItem, así que supongo que se solucionará en la versión estable Xcode 7. Crucemos los dedos.


En iOS 7, es simplemente el tintColor. Una forma de lograr esto podría ser subclase UITabBarViewController, establecer la clase personalizada en el guión gráfico y en su método viewDidLoad del tabBarVC subclasificado agregar esto:

[[self tabBar] setTintColor:[UIColor redColor]];