2015-01-25 9 views
3

У меня есть экземпляр UIBarButtonItem.
Я хочу изменить tintColor UIBarButtonItem на orangeColor.
И я также изменяю внешний вид UITextField на orangeColor в Appdelegate.UIBarButtomItem tintColor не работает, если я изменяю внешний вид UITextField

// some view controller 
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:nil action:nil]; 

[barButtonItem setTintColor:[KLStyle colorTitleOrangle]]; 


// Appdelegate.h 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    [[UITextField appearance] setTintColor:[UIColor orangeColor]]; 
} 

Существует проблема, если я не комментирую [[UITextField appearance] setTintColor:[UIColor orangeColor]];, то tintColor из UIBarButtonItem будет неправильно. Это по умолчанию tintColor blue.

Если я прокомментирую это, то оттенок цвета UIBarButtonItem будет правильным.

Кто-нибудь знает, почему это произойдет?

Спасибо за помощь!

+1

Как ни странно, у меня такая же проблема. Я считаю, что это ошибка, и я напишу отчет в Apple, я предлагаю вам сделать то же самое. – Cyrille

+0

Спасибо за сообщение! – thuai

+0

Человек ... просто эта проблема. Сбивая проклятую голову к стене! Я не видел этого ответа, пока я уже не понял его, хотя ... :( –

ответ

0

Обход:

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTintColor: [UIColor lightGrayColor]]; 
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
                           [UIColor colorWithRed:24.0/255 green:75.0/255 blue:152.0/255 alpha:1], 
                           NSForegroundColorAttributeName, 
                           [UIColor grayColor], 
                           NSForegroundColorAttributeName, 
                           [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], 
                           NSForegroundColorAttributeName, 
                           nil] 
                           forState:UIControlStateNormal]; 
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
                           [UIColor grayColor], 
                           NSForegroundColorAttributeName, 
                           [UIColor grayColor], 
                           NSForegroundColorAttributeName, 
                           [NSValue valueWithUIOffset:UIOffsetMake(0, 1)], 
                           NSForegroundColorAttributeName, 
                           nil] 
                         forState:UIControlStateDisabled];