2012-06-12 19 views

Odpowiedz

66

To działało:

NSDictionary *textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor darkGrayColor], UITextAttributeTextColor, [UIColor whiteColor], UITextAttributeTextShadowColor, nil]; 
[[UINavigationBar appearance] setTitleTextAttributes:textTitleOptions]; 
+5

Powinieneś zaakceptować własną odpowiedź. –

+0

bardzo pomocne .. dzięki –

+2

Działa dobrze. Jeśli trzeba także ustawić motyw do aktywnego UINavigationBar, dodać linię: '[yourViewController.navigationController.navigationBar setTitleTextAttributes: textTitleOptions]' –

3

To wywala aplikację przed UINavigationBar nie posiada tytuł lub stan ... To są metody UIButton

Trzeba

[[UINavigationBar appearance] setTintColor:[UIColor darkGrayColor]]; 
+0

Nie, to nie działa. Myślę, że to odbarwić sam pasek. Używamy już metody setBackgroundImage: do zmiany tła paska nawigacji, więc teraz muszę zmienić kolor tekstu z białego na ciemny szary, aby był czytelny. – RyJ

+0

Niestety nie wiedziałem, że próbujesz ustawić kolor tekstu navBar. Myślałem, że próbujesz zmienić jego kolor. –

2

@ Odpowiedź RyJ jest świetna i zadziałała dla mnie. Pomyślałam, że chip, że nie jest to dobre wprowadzenie do tego w miejscu Ray Wenderlich w pt (wybaczcie kalambur):

User Interface Customization in iOS 6

Patrz sekcja Dostosowywanie UINavigationBar

Oto fragment kodu dla tytuł pasek nawigacyjny, aby zmienić globalnie:

// Customize the title text for *all* UINavigationBars 
[[UINavigationBar appearance] setTitleTextAttributes: 
[NSDictionary dictionaryWithObjectsAndKeys: 
    [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0], 
    UITextAttributeTextColor, 
    [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8], 
    UITextAttributeTextShadowColor, 
    [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], 
    UITextAttributeTextShadowOffset, 
    [UIFont fontWithName:@"Arial-Bold" size:0.0], 
    UITextAttributeFont, 
    nil]]; 

Jeszcze jedna drobna uwaga jest to, że wydaje się, że jest to domyślny cień na pasku tytułowym, tak aby pozbyć się go, nie możesz po prostu usunąć tego atrybutu. Zamiast tego musisz ustawić przesunięcie cienia:

UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetMake(0, 0)] 
0

Użyłem następującego kodu, aby zmienić kolor paska tytułu.

NSShadow *shadow = [[NSShadow alloc] init]; 
shadow.shadowColor = [UIColor blackColor]; 
shadow.shadowOffset = CGSizeMake(1, 0); 

NSDictionary *titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor], 
              NSShadowAttributeName:shadow}; 

[[UINavigationBar appearance] setTitleTextAttributes:titleTextAttributes]; 
4

Oto przykład jak to zrobić w Swift:

UINavigationBar.appearance().titleTextAttributes = 
    [NSFontAttributeName:UIFont(name:"Exo2-Bold", size: 18) as! AnyObject, 
    NSForegroundColorAttributeName:UIColor.whiteColor()] 
0

Stosując nowoczesne składni i kod, który faktycznie działa, to w jaki sposób globalne stylizowania UINavigationBar tytułem tekst:

NSShadow *navigationBarTitleShadow = [[NSShadow alloc] init]; 
navigationBarTitleShadow.shadowColor = [UIColor colorWithWhite:0.5 
                 alpha:0.5]; 
navigationBarTitleShadow.shadowOffset = CGSizeMake(2.0, 2.0); 
[[UINavigationBar appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName : [UIColor blackColor], 
                 NSFontAttributeName : [UIFont fontWithName:@"Arial-BoldMT" 
                           size:30.0], 
                 NSShadowAttributeName : navigationBarTitleShadow }]; 

Uwaga: Właściwość NSShadow nie jest przestrzegana.

Uwaga: Cienie są na iOS 6. Nie używaj ich nigdy.

Powiązane problemy