una titulo poner pestaña personalizar personalizado pagina insertar incorporar iconos icono formato direcciones condicional con como barra agregar ios objective-c uitabbarcontroller uitabbar uitabbaritem

ios - titulo - poner icono en pestaña html



¿Cómo cambiar el color del icono/texto inactivo en la barra de pestañas? (18)

Creo que la respuesta de @ anka es bastante buena, y también agregué el siguiente código para habilitar el color de tinte para los elementos resaltados:

let image = UIImage(named:"tab-account")!.imageWithRenderingMode(.AlwaysTemplate) let item = tabBar.items![IC.const.tab_account] as! UITabBarItem item.selectedImage = image

O en una línea:

(tabBar.items![IC.const.tab_account] as! UITabBarItem).selectedImage = UIImage(named:"tab-account")!.imageWithRenderingMode(.AlwaysTemplate)

Así se ve:

¿Cómo puedo cambiar el color del icono / texto inactivo en la barra de pestañas de iOS 7? El de color gris.


En Swift 3.0 puedes escribirlo de la siguiente manera

Para la imagen de la barra de pestañas no seleccionada

viewController.tabBarItem.image = UIImage(named: "image")?.withRenderingMode(.alwaysOriginal)

Para la imagen de la barra de pestañas seleccionada

viewController.tabBarItem.selectedImage = UIImage(named: "image")?.withRenderingMode(.alwaysOriginal)


En lugar de agregar código de imagen de representación en cada viewController para tabBarItem, use la extensión

extension UITabBar{ func inActiveTintColor() { if let items = items{ for item in items{ item.image = item.image?.withRenderingMode(.alwaysOriginal) item.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.green], for: .normal) item.setTitleTextAttributes([NSForegroundColorAttributeName : UIColor.white], for: .selected) } } } }

Entonces llama a esto en tu clase de UITabBarController como

class CustomTabBarViewController: UITabBarController { override func viewDidLoad() { super.viewDidLoad() tabBar.inActiveTintColor() } }

Obtendrá salida como: NOTA: No olvide asignar la clase CustomTabBarViewController a su TabBarController en el guión gráfico.


En lugar de agregarlo a cada UIViewController, puede crear una extensión y alterar la apariencia de un UITabBarController

Cambiar el color del icono no seleccionado

extension UITabBarController { override public func viewDidLoad() { super.viewDidLoad() tabBar.items?.forEach({ (item) -> () in item.image = item.selectedImage?.imageWithColor(UIColor.redColor()).imageWithRenderingMode(.AlwaysOriginal) }) } }

Cambiar el color del icono seleccionado

let tabBarAppearance = UITabBar.appearance() tabBarAppearance.tintColor = UIColor.blackColor()

Cambiar (des) el color del título seleccionado

let tabBarItemApperance = UITabBarItem.appearance() tabBarItemApperance.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Edmondsans-Bold", size: 10)!, NSForegroundColorAttributeName:UIColor.redColor()], forState: UIControlState.Normal) tabBarItemApperance.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Edmondsans-Bold", size: 10)!, NSForegroundColorAttributeName:UIColor.blackColor()], forState: UIControlState.Selected)

Extensión de UIImage

extension UIImage { func imageWithColor(color1: UIColor) -> UIImage { UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale) color1.setFill() let context = UIGraphicsGetCurrentContext() CGContextTranslateCTM(context!, 0, self.size.height) CGContextScaleCTM(context!, 1.0, -1.0); CGContextSetBlendMode(context!, .Normal) let rect = CGRectMake(0, 0, self.size.width, self.size.height) as CGRect CGContextClipToMask(context!, rect, self.CGImage!) CGContextFillRect(context!, rect) let newImage = UIGraphicsGetImageFromCurrentImageContext()! as UIImage UIGraphicsEndImageContext() return newImage } }


Hay una mejor manera de no usar cada ViewController utilizando solo appdelegate.m

En su aplicación AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions , intente esto.

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; UITabBar *tabBar = tabBarController.tabBar; // repeat for every tab, but increment the index each time UITabBarItem *firstTab = [tabBar.items objectAtIndex:0]; // also repeat for every tab firstTab.image = [[UIImage imageNamed:@"someImage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; firstTab.selectedImage = [[UIImage imageNamed:@"someImageSelected.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];


La mejor manera de cambiar el color del elemento de la barra de pestañas Seleccionado es agregar un solo código en el método didFinishLaunchingWithOptions de appdelegate

UITabBar.appearance().tintColor = UIColor(red: 242/255.0, green: 32/255.0, blue: 80/255.0, alpha: 1.0)

Cambiará el color del texto del artículo seleccionado.


La nueva respuesta para hacer esto programáticamente a partir de iOS 10+ con Swift 3 es usar la API unselectedItemTintColor . Por ejemplo, si ha inicializado el controlador de la barra de pestañas dentro de su AppDelegate , tendría el siguiente aspecto:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { ... let firstViewController = VC1() let secondViewController = VC2() let thirdViewController = VC3() let tabBarCtrl = UITabBarController() tabBarCtrl.viewControllers = [firstViewController, secondViewController, thirdViewController] // set the color of the active tab tabBarCtrl.tabBar.tintColor = UIColor.white // set the color of the inactive tabs tabBarCtrl.tabBar.unselectedItemTintColor = UIColor.gray // set the text color ... }

Y para configurar los colores de texto seleccionados y no seleccionados:

let unselectedItem = [NSForegroundColorAttributeName: UIColor.green] let selectedItem = [NSForegroundColorAttributeName: UIColor.red] self.tabBarItem.setTitleTextAttributes(unselectedItem, for: .normal) self.tabBarItem.setTitleTextAttributes(selectedItem, for: .selected)


Para cambiar el color de selección de tabulación en lugar del color azul:

  1. Seleccione el elemento de tabla.
  2. Desde "Mostrar el inspector de identidad" en el menú del lado derecho.
  3. Establezca el atributo "tintColor" con su color preferido.



Si está buscando una solución swift 4 para iOS 11, haga algo como esto en el appDelegate. Esto está cambiando todos los no seleccionados a negro.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. UITabBar.appearance().unselectedItemTintColor = UIColor(displayP3Red: 0, green: 0, blue: 0, alpha: 1) return true }


Solo necesita poner este código en su primer ViewController llamado para TabBarViewController (ViewDidload):

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. [self loadIconsTabBar]; } -(void) loadIconsTabBar{ UITabBar *tabBar = self.tabBarController.tabBar; // UITabBarItem *firstTab = [tabBar.items objectAtIndex:0]; UITabBarItem *secondTab = [tabBar.items objectAtIndex:1]; firstTab.image = [[UIImage imageNamed:@"icono1.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; firstTab.selectedImage = [[UIImage imageNamed:@"icono1.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; secondTab.image = [[UIImage imageNamed:@"icono2.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]; secondTab.selectedImage = [[UIImage imageNamed:@"icono2.png"]imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; }


Solo necesitas poner este código en tu appDelegate.m llamado (didFinishLaunchingWithOptions):

[UITabBarItem.appearance setTitleTextAttributes: @{NSForegroundColorAttributeName : [UIColor whiteColor]} forState:UIControlStateNormal]; [UITabBarItem.appearance setTitleTextAttributes: @{NSForegroundColorAttributeName : [UIColor orangeColor]} forState:UIControlStateSelected]; [[UITabBar appearance] setTintColor:[UIColor whiteColor]]; // for unselected items that are gray [[UITabBar appearance] setUnselectedItemTintColor:[UIColor whiteColor]];


Solución rápida : para el elemento NO SELECCIONADO: en cada ViewController -> ViewDidLoad ()

self.tabBarItem = UITabBarItem(title: nil, image: UIImage(named: "PHOTO_NAME")?.imageWithRenderingMode(.AlwaysOriginal), selectedImage: UIImage(named: "NAME"))


También puede establecer la propiedad Render As de las imágenes de la barra de pestañas dentro de su catálogo de activos directamente. Allí tiene la opción de establecer la propiedad en Default , Original Image e Template Image .


esto funcionó para mí SWIFT 3

viewConroller.tabBarItem = UITabBarItem(title: "", image: UIImage(named: "image")?.withRenderingMode(.alwaysOriginal), selectedImage: UIImage(named: "image"))


para cambiar el color de los iconos deseleccionados de la barra de pestañas

Por debajo de iOS 10:

// this code need to be placed on home page of tabbar for(UITabBarItem *item in self.tabBarController.tabBar.items) { item.image = [item.image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; }

Por encima de iOS 10:

// this need to be in appdelegate didFinishLaunchingWithOptions [[UITabBar appearance] setUnselectedItemTintColor:[UIColor blackColor]];


para swift 3:

// both have to declare in view hierarchy method //(i.e: viewdidload, viewwillappear) according to your need. //this one is, when tab bar is selected self.tabBarItem.selectedImage = UIImage.init(named: "iOS")?.withRenderingMode(.alwaysOriginal) // this one is when tab bar is not selected self.tabBarItem.image = UIImage.init(named: "otp")?.withRenderingMode(.alwaysOriginal)


En cada primer ViewController para cada TabBar:

- (void)viewDidLoad { [super viewDidLoad]; // changing the unselected image color, you should change the selected image // color if you want them to be different self.tabBarItem.selectedImage = [[UIImage imageNamed:@"yourImage_selectedImage"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; self.tabBarItem.image = [[UIImage imageNamed:@"yourImage_image"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; }

La pista de este código es ''UIImageRenderingModeAlwaysOriginal'':

Modos de renderizado por la documentación de Apple:

UIImageRenderingModeAutomatic, // Use the default rendering mode for the context where the image is used UIImageRenderingModeAlwaysOriginal, // Always draw the original image, without treating it as a template UIImageRenderingModeAlwaysTemplate, // Always draw the image as a template image, ignoring its color information

Para cambiar el color del texto:

En AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Add this if you only want to change Selected Image color // and/or selected image text [[UITabBar appearance] setTintColor:[UIColor redColor]]; // Add this code to change StateNormal text Color, [UITabBarItem.appearance setTitleTextAttributes: @{NSForegroundColorAttributeName : [UIColor greenColor]} forState:UIControlStateNormal]; // then if StateSelected should be different, you should add this code [UITabBarItem.appearance setTitleTextAttributes: @{NSForegroundColorAttributeName : [UIColor purpleColor]} forState:UIControlStateSelected]; return YES; }