2012-03-08 39 views
13

Necesito cambiar el tamaño del texto del título de la barra de navegación para un controlador de vista en mi aplicación de iPhone. Estoy usando iOS5 y probé el siguiente código:Barra de navegación Título Tamaño de fuente

if ([self.tabBarItem respondsToSelector:@selector(setTitleTextAttributes:)]) { 
    NSLog(@"*** Support method(iOS 5): setTitleTextAttributes:"); 
    [self.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
               [UIFont fontWithName:@"AmericanTypewriter" size:20.0f], UITextAttributeFont, 
               [UIColor blackColor], UITextAttributeTextColor, 
               [UIColor grayColor], UITextAttributeTextShadowColor, 
               [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)], UITextAttributeTextShadowOffset, 
               nil]]; 
} 

Sin embargo, esto solo se aplica al tabBarItem.

Respuesta

13

Debe tener la propiedad de la barra de navegación y usar @property(nonatomic, copy) NSDictionary *titleTextAttributes.

Para obtener más información, vea UINavigationBar Class Reference y Customizing UINavigationBar section.

Para comprender mejor su pregunta: ¿Qué tipo de controlador tiene?

EDITAR

[self.navigationController.navigationBar setTitleTextAttributes:...]; 

si accede al navigationController dentro de un controlador empujado.

[navigationController.navigationBar setTitleTextAttributes:...]; 

si navigationController es su actual UINavigationController. Esto podría ser utilizado cuando, por ejemplo, si tiene el siguiente código:

UINavigationController* navigationController = ...; 
[navigationController.navigationBar setTitleTextAttributes:...]; 
+1

Qué pasa si sólo desea que la vista empujado a tener una fuente diferente? Quiero que mi vista raíz tenga el tamaño de fuente estándar, pero la vista presionada tenga una fuente más pequeña. Lo tengo que trabajar con la configuración de la fuente más pequeña, pero cuando vuelvo a la vista raíz, la fuente sigue siendo pequeña cuando quiero que sea el tamaño estándar. –

25

lo tienes ya, pero también se puede utilizar atributos siguientes métodos.

En Color,

NSDictionary *attributes=[NSDictionary dictionaryWithObjectsAndKeys:[UIColor RedColor],UITextAttributeTextColor, nil]; 

self.navigationController.navigationBar.titleTextAttributes = attributes; 

En Tamaño,

NSDictionary *size = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:17.0],UITextAttributeFont, nil]; 

self.navigationController.navigationBar.titleTextAttributes = size; 

Gracias.

Para iOS 7 y por encima de

Para Tamaño:

NSDictionary *size = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:17.0],NSFontAttributeName, nil]; 

self.navigationController.navigationBar.titleTextAttributes = size; 
+1

el tamaño sigue siendo el mismo para mí ... –

+0

muéstrame el código –

+0

Descubrí que no funciona cuando la fuente no se importa correctamente –

10

Desde iOS7, hago siempre como siguiente:

[[UINavigationBar appearance] setTitleTextAttributes: 
    [NSDictionary dictionaryWithObjectsAndKeys: 
     [UIFont fontWithName:@"Helvetica-Bold" size:18.0],NSFontAttributeName, 
     nil]]; 

Palabra Clave UITextAttributeFont se ha pulsado de iOS7, se supone que debes reemplazar con NSFontAttributeName.

Se puede utilizar para establecer [self.navigationController.navigationBar setTitleTextAttributes:] apariencia de alguien navigationController, mientras [UINavigationBar appearance] setTitleTextAttributes:] obras para toda la aplicación directamente. (Por supuesto que necesita para ponerlo en una posición de propiedad.)

2

Swift 2.0:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
     UINavigationBar.appearance().titleTextAttributes = [ 
      NSFontAttributeName: UIFont(name: "DINNextLTW04-Regular", size: 20)! 
     ] 

     return true 
    } 

O

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.navigationController?.navigationBarHidden = false 
    self.title = "SAMPLE" 

//Set Color 
    let attributes: AnyObject = [ NSForegroundColorAttributeName: UIColor.redColor()] 
    self.navigationController!.navigationBar.titleTextAttributes = attributes as? [String : AnyObject] 


//Set Font Size 
    self.navigationController!.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "Arial", size: 37.0)!]; 

} 
0

Mi ejemplo

guard let sansLightFont = UIFont(name: "OpenSans", size: 20) else { return } 
navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName : sansLightFont] 
Cuestiones relacionadas