bar ios objective-c swift uinavigationcontroller uibaritem

ios - ¿Cómo se usa setTitleTextAttributes: forState en UIBarItem?



uibarbuttonitem (4)

¿Cómo se usa setTitleTextAttributes:forState: en UIBarItem en iOS ?

¿Cómo configuras NSDictionary ? No puedo hacer que funcione y la documentación no es muy clara al respecto.

De la documentación:

setTitleTextAttributes:forState:

Establece los atributos de texto del título para un estado de control dado:

- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state

Parámetros:

atributos: un diccionario que contiene pares clave-valor para atributos de texto. Puede especificar la fuente, el color del texto, el color de sombra del texto y el desplazamiento de sombra de texto utilizando las claves enumeradas en NSString UIKit Additions Reference.

estado: el estado de control para el que desea establecer los atributos de texto para el título.


Respuesta para iOS 8.0 y Swift.

Código Objectice C:

NSShadow *shadow = [NSShadow new]; [shadow setShadowColor:[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0]]; [shadow setShadowOffset:CGSizeMake(0, 1)]; NSDictionary *attributes = @{ NSForegroundColorAttributeName: [UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0], NSShadowAttributeName: shadow, NSFontAttributeName: [UIFont fontWithName:@"AmericanTypewriter" size:16.0] }; [self.navigationItem.rightBarButtonItem setTitleTextAttributes:attributes forState: UIControlStateNormal]; // Or you can use. [[UIBarItem appearance] setTitleTextAttributes:attributes forState: UIControlStateNormal];

Swift 4.0:

// Bar title text color let shadow = NSShadow() shadow.shadowColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0) shadow.shadowOffset = CGSize(width: 0, height: 1) let color : UIColor = UIColor(red: 220.0/255.0, green: 104.0/255.0, blue: 1.0/255.0, alpha: 1.0) let titleFont : UIFont = UIFont(name: "AmericanTypewriter", size: 16.0)! let attributes = [ NSAttributedStringKey.foregroundColor : color, NSAttributedStringKey.shadow : shadow, NSAttributedStringKey.font : titleFont ] self.navigationItem.rightBarButtonItem?.setTitleTextAttributes(attributes, for: UIControlState.normal) // Or you can use UIBarItem.appearance().setTitleTextAttributes(attributes, for: UIControlState.normal)


Aquí está el código de phix23, solo con una sintaxis actualizada, y creo más limpia:

[[UIBarItem appearance] setTitleTextAttributes:@{ UITextAttributeTextColor: [UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0], UITextAttributeTextShadowColor: [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0], UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeFont: [UIFont fontWithName:@"AmericanTypewriter" size:0.0]} forState: UIControlStateNormal];


Código de ejemplo:

[[UIBarItem appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor colorWithRed:220.0/255.0 green:104.0/255.0 blue:1.0/255.0 alpha:1.0], UITextAttributeTextColor, [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0], UITextAttributeTextShadowColor, [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], UITextAttributeTextShadowOffset, [UIFont fontWithName:@"AmericanTypewriter" size:0.0], UITextAttributeFont, nil] forState:UIControlStateNormal];


[self.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:[UIColor whiteColor], nil] forKeys:[NSArray arrayWithObjects:UITextAttributeTextColor, nil]] forState:UIControlStateNormal];