ios cocoa-touch uibarbuttonitem

ios - Cambiar la fuente de un UIBarButtonItem



cocoa-touch (12)

A lo largo de la aplicación:

if let font = UIFont(name: "AvenirNext-DemiBold", size: 15) { UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: font,NSForegroundColorAttributeName:TOOLBAR_TITLE_COLOR], forState: UIControlState.Normal) }

Tengo un UIBarButtonItem en mi UIToolbar titulado Done . Ahora quiero cambiar la fuente de la predeterminada a "Trebuchet MS" con negrita. ¿Cómo puedo hacer eso?


Como UIBarButtonItem hereda de UIBarItem, puedes probar

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

pero esto es solo para iOS5. Para iOS 3/4, deberás usar una vista personalizada.


En Swift harías esto de la siguiente manera:

backButtonItem.setTitleTextAttributes([ NSFontAttributeName : UIFont(name: "Helvetica-Bold", size: 26)!, NSForegroundColorAttributeName : UIColor.blackColor()], forState: UIControlState.Normal)


Estas son excelentes respuestas arriba. Solo estoy actualizando para iOS7:

NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Thin" size:18.0] , NSForegroundColorAttributeName: [UIColor whiteColor]}; [[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];


Para aquellos interesados ​​en utilizar UIAppearance para UIBarButtonItem las fuentes de su UIBarButtonItem toda la aplicación, se puede lograr utilizando esta línea de código:

C objetivo:

NSDictionary *barButtonAppearanceDict = @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light" size:12.0], NSForegroundColorAttributeName: [UIColor whiteColor]}; [[UIBarButtonItem appearance] setTitleTextAttributes:barButtonAppearanceDict forState:UIControlStateNormal];

Swift 2.3:

UIBarButtonItem.appearance().setTitleTextAttributes( [ NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!, NSForegroundColorAttributeName : UIColor.white ], for: .normal)

Swift 3.0 / 4

UIBarButtonItem.appearance().setTitleTextAttributes( [ NSFontAttributeName : UIFont(name: "HelveticaNeue-Light", size: 12)!, NSForegroundColorAttributeName : UIColor.white, ], for: .normal)

O para un solo UIBarButtonItem (no para todas las aplicaciones), si tiene una fuente personalizada para un botón en particular:

let barButtonItem = UIBarButton() barButtonItem.setTitleTextAttributes([ NSFontAttributeName : UIFont(name: "FontAwesome", size: 26)!, NSForegroundColorAttributeName : UIColor.white, ], for: .normal) barButtonItem.title = "/u{f02a}"

Por supuesto, puedes cambiar la fuente y el tamaño a lo que quieras. Prefiero poner este código en el archivo AppDelegate.m en la sección didFinishLaunchingWithOptions .

Atributos disponibles (simplemente agréguelos al NSDictionary ):

(Actualizado para iOS7 +)


Para hacer esto para algunos UIBarButtonItems pero no todos, recomiendo el siguiente enfoque.

  1. Cree una subclase UIBarButtonItem . No le agregue nada; solo lo usará como una clase personalizada en el guión gráfico y para su proxy de aparición ...
  2. En su guión gráfico, cambie la clase personalizada para todos los UIBarButtonItems deseados a su subclase
  3. En su AppDelegate, importe su subclase UIBarButtonItem y agregue la siguiente línea a la application:didFinishLaunchingWithOptions:

En mi caso, UIBarButtonItem con el único propósito de doblar el texto:

[[BoldBarButtonItem appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIFont boldSystemFontOfSize:18.0], NSFontAttributeName,nil] forState:UIControlStateNormal];


Para ser precisos, esto se puede hacer de la siguiente manera

[buttonItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIFont fontWithName:@"Helvetica-Bold" size:26.0], NSFontAttributeName, [UIColor greenColor], NSForegroundColorAttributeName, nil] forState:UIControlStateNormal];

O con la sintaxis literal del objeto:

[buttonItem setTitleTextAttributes:@{ NSFontAttributeName: [UIFont fontWithName:@"Helvetica-Bold" size:26.0], NSForegroundColorAttributeName: [UIColor greenColor] } forState:UIControlStateNormal];

Para su comodidad, aquí está la implementación de Swift:

buttonItem.setTitleTextAttributes([ NSAttributedStringKey.font: UIFont(name: "Helvetica-Bold", size: 26.0)!, NSAttributedStringKey.foregroundColor: UIColor.green], for: .normal)


Puede crear un UIView personalizado UIView programación:

UIView *buttonItemView = [[UIView alloc] initWithFrame:buttonFrame];

Luego agrega imágenes, etiquetas o lo que quieras a tu vista personalizada:

[buttonItemView addSubview:customImage]; [buttonItemView addSubview:customLabel]; ...

Ahora ponlo en tu UIBarButtomItem .

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonItemView];

Y finalmente agregue barButtonItem a su barra de navegación.


Suponiendo que desea soportar iOS4 y versiones anteriores, su mejor opción es crear un botón de barra con el método initWithCustomView: y proporcionar su propia vista que podría ser algo así como un UIButton donde puede personalizar fácilmente la fuente.

También puede arrastrar un UIButton a una barra de herramientas o una barra de navegación en Interface Builder si desea crear el botón arrastrando y soltando en lugar de hacerlo mediante programación.

Desafortunadamente, esto significa crear la imagen de fondo del botón usted mismo. No hay forma de personalizar la fuente de un UIBarButtonItem estándar antes de iOS5.


veloz 3

barButtonName.setTitleTextAttributes( [NSFontAttributeName : UIFont.systemFont(ofSize: 18.0),NSForegroundColorAttributeName : UIColor.white], for: .normal)


UIBarButton no tiene propiedad relacionada para cambiar la fuente. Pero puede crear un botón con una fuente personalizada y luego agregarlo a UIBarButton. Puede ser solucionado tu problema


Swift3

buttonName.setAttributedTitle([ NSFontAttributeName : UIFont.systemFontOfSize(18.0), NSForegroundColorAttributeName : UIColor.red,NSBackgroundColorAttributeName:UIColor.black], forState: UIControlState.Normal)

rápido

barbutton.setTitleTextAttributes([ NSFontAttributeName : UIFont.systemFontOfSize(18.0), NSForegroundColorAttributeName : UIColor.redColor(),NSBackgroundColorAttributeName:UIColor.blackColor()], forState: UIControlState.Normal)

C objetivo

[ barbutton setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: [UIFont fontWithName:@"Helvetica-Bold" size:20.0], NSFontAttributeName, [UIColor redColor], NSForegroundColorAttributeName,[UIColor blackColor],NSBackgroundColorAttributeName, nil] forState:UIControlStateNormal];