tab icon bar iphone uitabbarcontroller

iphone - icon - uitabbarcontroller swift 4



Cambio de color de tinte/fondo de UITabBar (18)

Cuando solo usa addSubview, sus botones perderán capacidad de clics, por lo que en lugar de

[[self tabBar] addSubview:v];

utilizar:

[[self tabBar] insertSubview:v atIndex:0];

UINavigationBar y UISearchBar tienen una propiedad tintColor que te permite cambiar el color del tinte (sorprendente, lo sé) de esos dos elementos. Quiero hacer lo mismo con la UITabBar en mi aplicación, pero ahora he encontrado la manera de cambiarlo del color negro predeterminado. ¿Algunas ideas?


En iOS 7:

[[UITabBar appearance] setBarTintColor:[UIColor colorWithRed:(38.0/255.0) green:(38.0/255.0) blue:(38.0/255.0) alpha:1.0]];

También recomiendo configurar primero dependiendo de tus deseos visuales:

[[UITabBar appearance] setBarStyle:UIBarStyleBlack];

El estilo de barra coloca un sutil separador entre el contenido de tu vista y tu barra de pestañas.


Hay algunas buenas ideas en las respuestas existentes, muchas funcionan de forma ligeramente diferente y lo que elijas también dependerá de a qué dispositivos te dirijas y qué tipo de aspecto pretendas lograr. UITabBar es notoriamente poco intuitivo cuando se trata de personalizar su apariencia, pero aquí hay algunos trucos más que pueden ayudar:

1). Si está buscando deshacerse de la superposición brillante para una apariencia más plana, haga lo siguiente:

tabBar.backgroundColor = [UIColor darkGrayColor]; // this will be your background [tabBar.subviews[0] removeFromSuperview]; // this gets rid of gloss

2). Para establecer imágenes personalizadas en los botones de tabBar, haga algo como:

for (UITabBarItem *item in tabBar.items){ [item setFinishedSelectedImage:selected withFinishedUnselectedImage:unselected]; [item setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)]; }

Donde están selected y unselected están los objetos UIImage de su elección. Si desea que sean de un color plano, la solución más simple que encontré es crear un UIView con el backgroundColor deseado y luego simplemente renderizarlo en un UIImage con la ayuda de QuartzCore. Utilizo el siguiente método en una categoría en UIView para obtener un UIImage con los contenidos de la vista:

- (UIImage *)getImage { UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, [[UIScreen mainScreen]scale]); [[self layer] renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return viewImage; }

3) Finalmente, es posible que desee personalizar el estilo de los títulos de los botones. Hacer:

for (UITabBarItem *item in tabBar.items){ [item setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor redColor], UITextAttributeTextColor, [UIColor whiteColor], UITextAttributeTextShadowColor, [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset, [UIFont boldSystemFontOfSize:18], UITextAttributeFont, nil] forState:UIControlStateNormal]; }

Esto te permite hacer algunos ajustes, pero aún bastante limitados. Particularmente, no puede modificar libremente dónde se coloca el texto dentro del botón, y no puede tener diferentes colores para los botones seleccionados / no seleccionados. Si desea hacer un diseño de texto más específico, simplemente configure UITextAttributeTextColor para que sea claro y agregue su texto en las imágenes selected y unselected de la parte (2).


Hola, estoy usando iOS SDK 4 y pude resolver este problema con solo dos líneas de código y así es.

tBar.backgroundColor = [UIColor clearColor]; tBar.backgroundImage = [UIImage imageNamed:@"your-png-image.png"];

¡Espero que esto ayude!


La siguiente es la solución perfecta para esto. Esto funciona bien conmigo para iOS5 e iOS4.

//---- For providing background image to tabbar UITabBar *tabBar = [tabBarController tabBar]; if ([tabBar respondsToSelector:@selector(setBackgroundImage:)]) { // ios 5 code here [tabBar setBackgroundImage:[UIImage imageNamed:@"image.png"]]; } else { // ios 4 code here CGRect frame = CGRectMake(0, 0, 480, 49); UIView *tabbg_view = [[UIView alloc] initWithFrame:frame]; UIImage *tabbag_image = [UIImage imageNamed:@"image.png"]; UIColor *tabbg_color = [[UIColor alloc] initWithPatternImage:tabbag_image]; tabbg_view.backgroundColor = tabbg_color; [tabBar insertSubview:tabbg_view atIndex:0]; }


No hay una manera simple de hacerlo, básicamente necesitas subescribir UITabBar e implementar un dibujo personalizado para hacer lo que quieras. Es bastante trabajo para el efecto, pero puede valer la pena. Recomiendo presentar un error con Apple para que se agregue a un futuro SDK de iPhone.


Otra solución (que es un hack) es establecer el alfa en el tabBarController en 0.01 para que sea virtualmente invisible y aún se pueda hacer clic. A continuación, configure un control ImageView en la parte inferior de la plumilla MainWindow con su imagen personalizada de barra de pestañas debajo de la pestaña alphaBlock COntroller. A continuación, intercambie las imágenes, cambie los colores o hightlight cuando el tabbarcontroller cambie de vista.

Sin embargo, pierde la funcionalidad ''... más'' y personaliza.


Pude hacerlo funcionar subclasando un UITabBarController y usando clases privadas:

@interface UITabBarController (private) - (UITabBar *)tabBar; @end @implementation CustomUITabBarController - (void)viewDidLoad { [super viewDidLoad]; CGRect frame = CGRectMake(0.0, 0.0, self.view.bounds.size.width, 48); UIView *v = [[UIView alloc] initWithFrame:frame]; [v setBackgroundColor:kMainColor]; [v setAlpha:0.5]; [[self tabBar] addSubview:v]; [v release]; } @end


Swift 3 usando apariencia desde su AppDelegate haga lo siguiente:

UITabBar.appearance().barTintColor = your_color


Tengo un apéndice a la respuesta final. Si bien el esquema esencial es correcto, se puede mejorar el truco de usar un color parcialmente transparente. Supongo que es solo para dejar que se muestre el degradado predeterminado. Ah, también, la altura del TabBar es de 49 píxeles en lugar de 48, al menos en OS 3.

Por lo tanto, si tiene una imagen de 1 x 49 apropiada con un degradado, esta es la versión de viewDidLoad que debe usar:

- (void)viewDidLoad { [super viewDidLoad]; CGRect frame = CGRectMake(0, 0, 480, 49); UIView *v = [[UIView alloc] initWithFrame:frame]; UIImage *i = [UIImage imageNamed:@"GO-21-TabBarColorx49.png"]; UIColor *c = [[UIColor alloc] initWithPatternImage:i]; v.backgroundColor = c; [c release]; [[self tabBar] addSubview:v]; [v release]; }


iOS 5 ha agregado algunos nuevos métodos de apariencia para personalizar el aspecto de la mayoría de los elementos de la interfaz de usuario.

Puede orientar cada instancia de una UITabBar en su aplicación utilizando el proxy de apariencia.

Para iOS 5 + 6:

[[UITabBar appearance] setTintColor:[UIColor redColor]];

Para iOS 7 y superior, usa lo siguiente:

[[UITabBar appearance] setBarTintColor:[UIColor redColor]];

El uso del proxy de apariencia cambiará cualquier instancia de la barra de pestañas en toda la aplicación. Para una instancia específica, use una de las nuevas propiedades en esa clase:

UIColor *tintColor; // iOS 5+6 UIColor *barTintColor; // iOS 7+ UIColor *selectedImageTintColor; UIImage *backgroundImage; UIImage *selectionIndicatorImage;


para mí es muy simple cambiar el color de Tabbar como:

[self.TabBarController.tabBar setTintColor:[UIColor colorWithRed:0.1294 green:0.5686 blue:0.8353 alpha:1.0]]; [self.TabBarController.tabBar setTintColor:[UIColor "YOUR COLOR"];

¡¡¡Prueba esto!!!


[[self tabBar] insertSubview:v atIndex:0]; me funciona a la perfección


Respuesta de Swift 3.0: (de Vaibhav Gaikwad)

Para cambiar el color de los iconos de deselección de tabbar:

if #available(iOS 10.0, *) { UITabBar.appearance().unselectedItemTintColor = UIColor.white } else { // Fallback on earlier versions for item in self.tabBar.items! { item.image = item.image?.withRenderingMode(UIImageRenderingMode.alwaysOriginal) } }

Para cambiar el color del texto solamente:

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.white], for: .normal) UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.red, for: .selected)


para el color de fondo

Tabbarcontroller.tabBar.barTintColor=[UIColor redcolour];

o esto en App Delegate

[[UITabBar appearance] setBackgroundColor:[UIColor blackColor]];

para cambiar el color de los iconos de deselección de tabbar

Para 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]];


[[UITabBar appearance] setTintColor:[UIColor redColor]]; [[UITabBar appearance] setBarTintColor:[UIColor yellowColor]];


[v setBackgroundColor ColorwithRed: Green: Blue: ];


if ([tabBar respondsToSelector:@selector(setBackgroundImage:)]) { // ios 5 code here [tabBar setBackgroundImage:[UIImage imageNamed:@"image.png"]]; } else { // ios 4 code here CGRect frame = CGRectMake(0, 0, 480, 49); UIView *tabbg_view = [[UIView alloc] initWithFrame:frame]; UIImage *tabbag_image = [UIImage imageNamed:@"image.png"]; UIColor *tabbg_color = [[UIColor alloc] initWithPatternImage:tabbag_image]; tabbg_view.backgroundColor = tabbg_color; [tabBar insertSubview:tabbg_view atIndex:0]; }