uitabbar cambia el color de background de un uitabbaritem en iOS7

¿Puedo cambiar el color de background de un UITabBarItem específico en un UITabBar?

Sé cómo cambiar todo el background del background seleccionado, utilizando:

[[UITabBar appearance] setBarTintColor:[UIColor networkingColor]]; [[UITabBar appearance] setTintColor:[UIColor blueColor]]; [[UITabBar appearance] setSelectedImageTintColor:[UIColor yellowColor]]; 

¿Pero se puede hacer solo por un artículo sin subclasss?

Gracias

Puede agregar una subvista a la tabBar principal y establecer un color de background en la subvista. Puede usar las dimensiones del marco tabBar para calcular el desplazamiento y el ancho de su tabBarItem, y luego insert la subvista debajo.

Ejemplo (en Swift):

 // Add background color to middle tabBarItem let itemIndex = 2 let bgColor = UIColor(networking: 0.08, green: 0.726, blue: 0.702, alpha: 1.0) let itemWidth = tabBar.frame.width / CGFloat(tabBar.items!.count) let bgView = UIView(frame: CGRectMake(itemWidth * itemIndex, 0, itemWidth, tabBar.frame.height)) bgView.backgroundColor = bgColor tabBar.insertSubview(bgView, atIndex: 0) 

en Swift: esta solución es para aplicaciones que usan Auto Layout . La diferencia principal entre otra solución es que: tabBar.frame.width no está obteniendo el ancho de pantalla del dispositivo real. Entonces, bgView está apareciendo en el lugar equivocado.

Puede solucionarlo con esto: UIScreen.mainScreen().bounds.width

 let tabWidth:CGFloat = UIScreen.mainScreen().bounds.width / CGFloat(self.tabbar!.items!.count) let tabIndex:CGFloat = 2 let bgColor:UIColor = UIColor.networkingColor() let bgView = UIView(frame: CGRectMake(tabWidth * tabIndex, 0, tabWidth, 49)) bgView.backgroundColor = bgColor self.tabbar!.insertSubview(bgView, atIndex: 0) 

49 es una altura pnetworkingeterminada de UITabbar

Solución del objective C:

 int itemIndex = 3; UIColor* bgColor = [UIColor colorWithRed:(245/255.f) green:(192/255.f) blue:(47/255.f) alpha:1]; float itemWidth = self.tabBarController.tabBar.frame.size.width / 5.0f; //5 = tab bar items UIView* bgView = [[UIView alloc]initWithFrame: CGRectMake(itemWidth*itemIndex, 0,itemWidth, self.tabBarController.tabBar.frame.size.height)]; bgView.backgroundColor = bgColor; [self.tabBarController.tabBar insertSubview:bgView atIndex:1]; 

Realmente no puedes hacer esto con la propiedad de color de tinte. Mira esta publicación sobre el hecho de que incluso el setSelectedImageTintColor realmente no parece funcionar (no lo comprobé la última vez).

La solución es cambiar el tintColor sobre la marcha para el artículo en cuestión. Puede hacer esto ad hoc siempre que el elemento seleccionado cambie implementando el método tabBar:didSelectItem: por ejemplo, en el delegado de la aplicación.