2012-03-08 15 views
13

Potrzebuję zmienić rozmiar tekstu tytułu paska nawigacji dla jednego kontrolera widoku w mojej aplikacji na iPhone'a. Korzystam z systemu iOS5 i wypróbowałem następujący kod:Rozmiar tytułu tytułu paska nawigacyjnego

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

Dotyczy to tylko tabBarItem.

Odpowiedz

13

Musisz pobrać właściwość paska nawigacji i użyć @property(nonatomic, copy) NSDictionary *titleTextAttributes.

Aby uzyskać więcej informacji, patrz: UINavigationBar Class Reference i Customizing UINavigationBar section.

Aby lepiej zrozumieć swoje pytanie: Jaki typ kontrolera posiadasz?

EDIT

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

gdy korzystasz navigationController w popychane kontrolera.

[navigationController.navigationBar setTitleTextAttributes:...]; 

jeśli navigationController widoczna jest aktualna UINavigationController. To może być stosowane, gdy na przykład, jeśli masz następujący kod:

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

Co zrobić, jeśli chcesz tylko pchnął widok mieć inną czcionkę? Chcę, aby mój widok główny miał standardowy rozmiar czcionki, ale widok wypychany, aby mieć mniejszą czcionkę. Mam go do pracy przy ustawianiu mniejszej czcionki, ale kiedy wrócę do widoku głównego, czcionka pozostanie mała, gdy chcę, aby był standardowym rozmiarem. –

25

masz go już, ale można też użyć następujących atrybutów metod.

Dla Color

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

self.navigationController.navigationBar.titleTextAttributes = attributes; 

W polu Rozmiar

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

self.navigationController.navigationBar.titleTextAttributes = size; 

Dzięki.

Dla iOS 7 i powyżej

Dla Rozmiar:

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

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

rozmiar pozostaje taki sam dla mnie ... –

+0

Pokaż mi kod –

+0

Okazało się, że nie działa, gdy czcionka nie jest poprawnie zaimportowana –

10

Od iOS7, zawsze zrobić jak następuje:

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

słów kluczowych UITextAttributeFont został wciśnięty z iOS7, powinieneś zamienić na NSFontAttributeName.

Można użyć [self.navigationController.navigationBar setTitleTextAttributes:] ustawić appearence ktoś navigationController, natomiast [UINavigationBar appearance] setTitleTextAttributes:] prace na całej swojej aplikacji bezpośrednio. (Oczywiście trzeba umieścić go w pozycji rzeczowych.)

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 
    } 

Albo

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

Mój przykład

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