2012-04-06 26 views
23

Próbuję zmienić kolor czcionki tekstu na plecach przycisku w moim UINavigationControllerBarzmiana czcionki z tyłu przycisk na uinavigationcontroller

[[UIBarButtonItem appearance] setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 

daje mi ten błąd: [_UIBarItemAppearance setTitleColor: forState:]: nierozpoznany Selektor wysłany do instancji 0x69aeb70 '

Każda pomoc? Dzięki!

Odpowiedz

13

Użyj tego zamiast domyślnie funkcja dostępna w iOS 5

UIBarButtonItem *backbutton = [[UIBarButtonItem alloc] initWithTitle:@"back" style:UIBarButtonItemStyleBordered target:nil action:nil];  

    [backbutton setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
                [UIColor blackColor],UITextAttributeTextColor,[UIFont fontWithName:TEXTFONT size:16.0f],UITextAttributeFont, 
                nil] forState:UIControlStateNormal]; 
+0

Nie działa na iOS7 +. Odpowiedź Itgiawy na to działa. – Tulleb

49
NSMutableDictionary *attributes = [NSMutableDictionary dictionary]; 
[attributes setValue:[UIColor colorWithRed:(163.0f/255.0f) green:(0.0f) blue:(0.0f) alpha:1.0f] forKey:UITextAttributeTextColor]; 
[attributes setValue:[UIColor clearColor] forKey:UITextAttributeTextShadowColor]; 
[attributes setValue:[NSValue valueWithUIOffset:UIOffsetMake(0.0, 0.0)] forKey:UITextAttributeTextShadowOffset]; 
[[UIBarButtonItem appearance] setTitleTextAttributes:attributes forState:UIControlStateNormal]; 

wydaje się działać!

+0

DZIAŁA PERFEKCYJNIE !!! –

+2

O wiele lepszym rozwiązaniem jest użycie opcji wyglądu. Działają globalnie, klasowo lub instancyjnie. Każdy, kto tu przyjdzie, powinien zamiast tego użyć tej odpowiedzi. – Heckman

+0

W pełni zależy od sytuacji. Pracowałem nad grą i musiałem zmienić czcionkę tylko tymczasowo. ;-) – phikes

15
[[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
                [UIFont fontWithName:kDefaultFont size:16.0f],UITextAttributeFont, 
                nil] forState:UIControlStateNormal]; 
+5

Dla IOS7 zamień UITextAttributeFont na NSFontAttributeName –

+0

Działa idealnie na iOS8, również zmieniono UITextAttributeFont na NSFontAttributeName i działał również – Yahia

6

i pięknych rozwiązań, iOS7 + (z powodu nazwy atrybutów):

NSShadow *shadow = [NSShadow new]; 
[shadow setShadowColor: [UIColor colorWithWhite:0.0f alpha:0.750f]]; 
[shadow setShadowOffset: CGSizeMake(0.0f, 1.0f)]; 

[[UIBarButtonItem appearance] setTitleTextAttributes:@{ 
     NSFontAttributeName: [UIFont systemFontOfSize:24], 
     NSForegroundColorAttributeName: [UIColor colorWithWhite:0.2 alpha:1.0], 
     NSShadowAttributeName: shadow, 
} forState:UIControlStateNormal]; 
0

rozwiązaniem w Swift 4:

UIBarButtonItem.appearance().setTitleTextAttributes(
[ 
    NSAttributedStringKey.font: UIFont(name: "MyriadPro-SemiboldCond", size: 16)!, 
    NSAttributedStringKey.foregroundColor: UIColor.white 
], for: .normal) 

Dodaj to w Ap pDelegate i zostanie zastosowany do wszystkich przycisków w aplikacji.

Powiązane problemy