descargar caracteristicas ios ios7

caracteristicas - ios 8



Color de flecha del botón Atrás de iOS 7 UIBarButton (17)

Estoy tratando de cambiar la flecha del botón de retroceso

Actualmente estoy usando lo siguiente para controlar el tamaño del texto y el color del texto en el botón Atrás:

[[UIBarButtonItem appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], UITextAttributeTextColor, [UIFont boldSystemFontOfSize:16.0f], UITextAttributeFont, [UIColor darkGrayColor], UITextAttributeTextShadowColor, [NSValue valueWithCGSize:CGSizeMake(0.0, -1.0)], UITextAttributeTextShadowOffset, nil] forState:UIControlStateNormal];

pero si quiero cambiar solo el color de la flecha para el botón Atrás, ¿qué debo hacer?


Debes configurar el tintColor de la aplicación completa.

self.window.tintColor = [UIColor redColor];

O en Swift 3:

self.window?.tintColor = UIColor.blue

Fuente: iOS 7 UI Guía de transición


Dentro del controlador raízViewController que inicializa navigationController, puse este código dentro de mi método viewDidAppear:

//set back button color [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor,nil] forState:UIControlStateNormal]; //set back button arrow color [self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];


En caso de que esté haciendo un botón de retroceso personalizado basándose en UIButton con imagen de flecha, aquí está el fragmento de la subclase. Utilizándolo, puede crear un botón en el código o simplemente asignar una clase en Interface Builder a cualquier UIButton. Back Arrow La imagen se agregará automáticamente y se coloreará con el color del texto.

@interface UIImage (TintColor) - (UIImage *)imageWithOverlayColor:(UIColor *)color; @end @implementation UIImage (TintColor) - (UIImage *)imageWithOverlayColor:(UIColor *)color { CGRect rect = CGRectMake(0.0f, 0.0f, self.size.width, self.size.height); if (UIGraphicsBeginImageContextWithOptions) { CGFloat imageScale = 1.0f; if ([self respondsToSelector:@selector(scale)]) imageScale = self.scale; UIGraphicsBeginImageContextWithOptions(self.size, NO, imageScale); } else { UIGraphicsBeginImageContext(self.size); } [self drawInRect:rect]; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetBlendMode(context, kCGBlendModeSourceIn); CGContextSetFillColorWithColor(context, color.CGColor); CGContextFillRect(context, rect); UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; } @end #import "iOS7backButton.h" @implementation iOS7BackButton -(void)awakeFromNib { [super awakeFromNib]; BOOL is6=([[[UIDevice currentDevice] systemVersion] floatValue] <7); UIImage *backBtnImage = [[UIImage imageNamed:@"backArrow"] imageWithOverlayColor:self.titleLabel.textColor]; [self setImage:backBtnImage forState:UIControlStateNormal]; [self setTitleEdgeInsets:UIEdgeInsetsMake(0, 5, 0, 0)]; [self setImageEdgeInsets:UIEdgeInsetsMake(0, is6?0:-10, 0, 0)]; } + (UIButton*) buttonWithTitle:(NSString*)btnTitle andTintColor:(UIColor*)color { BOOL is6=([[[UIDevice currentDevice] systemVersion] floatValue] <7); UIButton *backBtn=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 60, 30)]; UIImage *backBtnImage = [[UIImage imageNamed:@"backArrow"] imageWithOverlayColor:color]; [backBtn setImage:backBtnImage forState:UIControlStateNormal]; [backBtn setTitleEdgeInsets:UIEdgeInsetsMake(0, is6?5:-5, 0, 0)]; [backBtn setImageEdgeInsets:UIEdgeInsetsMake(0, is6?0:-10, 0, 0)]; [backBtn setTitle:btnTitle forState:UIControlStateNormal]; [backBtn setTitleColor:color /*#007aff*/ forState:UIControlStateNormal]; return backBtn; } @end



En iOS 7, puede colocar la siguiente línea de código dentro de la application:didFinishLaunchingWithOptions: en su archivo AppDelegate.m :

[[UINavigationBar appearance] setTintColor:myColor];

Establezca myColor en el color que desea que sea el botón Atrás en toda la aplicación. No es necesario ponerlo en cada archivo.


En swift 3, para cambiar el color de la flecha del botón Atrás UIBarButton

self.navigationController?.navigationBar.tintColor = UIColor.black


Es posible cambiar solo el color de la flecha (no el color del título del botón de retroceso) de esta manera:

[[self.navigationController.navigationBar.subviews lastObject] setTintColor:[UIColor blackColor]];

La barra de navegación contiene una subvista del tipo _UINavigationBarBackIndicatorView (último elemento en la matriz de subvistas) que representa una flecha.

El resultado es una barra de navegación con diferentes colores de flecha de botón hacia atrás y título de botón hacia atrás


Para cambiar el color de cheurón de botón de retroceso para un controlador de navegación específico *:

self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

* Si está utilizando una aplicación con más de 1 controlador de navegación y desea que este color de galón se aplique a cada uno, puede usar el proxy de apariencia para configurar el cheurón de botón de retroceso para cada controlador de navegación, de la siguiente manera:

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

Y para una buena medida, de forma rápida (gracias a Jay Mayu en los comentarios):

UINavigationBar.appearance().tintColor = UIColor.whiteColor()


Puede establecer el color en toda la barra de navegación de la aplicación utilizando el método

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions{ [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]]; }


Puede establecer la propiedad tintColor en el botón (o elemento de botón de barra) o en la vista del controlador de vista. De forma predeterminada, la propiedad heredará el tinte de la vista principal, hasta la UIWindow de nivel UIWindow de su aplicación.


Si desea cambiar solo la Flecha hacia atrás PERO en toda la aplicación, haga esto:

[[NSClassFromString(@"_UINavigationBarBackIndicatorView") appearance] setTintColor:[UIColor colorWithHexString: @"#f00000"]];


Si está utilizando guiones gráficos, puede establecer el color del tinte de la barra de navegación.


Solo para cambiar el color de NavigationBar , puede establecer el color del tinte como se muestra a continuación.

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];


Tuve que usar ambos:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor,nil] forState:UIControlStateNormal]; [[self.navigationController.navigationBar.subviews lastObject] setTintColor:[UIColor whiteColor]];

Y funciona para mí, gracias por todos!


Actualiza Swift 3

navigationController?.navigationItem.rightBarButtonItem?.tintColor = UIColor.yellow navigationController?.navigationBar.tintColor = UIColor.red navigationController?.navigationBar.barTintColor = UIColor.gray navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.blue]

Resultado:


Swift 2.0: botones y barra de navegación para colorear

navigationController?.navigationBar.barTintColor = UIColor.blueColor() navigationController?.navigationBar.tintColor = UIColor.whiteColor() navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]


UINavigationBar *nbar = self.navigationController.navigationBar; if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) { //iOS 7 nbar.barTintColor = [UIColor blueColor]; // bar color //or custom color //[UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1]; nbar.navigationBar.translucent = NO; nbar.tintColor = [UIColor blueColor]; //bar button item color } else { //ios 4,5,6 nbar.tintColor = [UIColor whiteColor]; //or custom color //[UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1]; }