2013-09-17 2 views
0

Я хочу, чтобы изменить дизайн моего UIBarButtonItem и он работает несколько с этим кодом:UIBarButtonItem изменение конструкции не работает в первый раз, но второй

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIImage *image = [[UIImage imageNamed:@"header.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 5, 0, 5)]; 
    [[UIBarButtonItem appearance] setBackgroundImage:image forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
} 

Проблема заключается в том, что впервые приложение загружает фоновое изображение кнопки не изменяется, но если я оставлю представление и вернусь, фон изменится на то, что я хочу. Что здесь может быть проблемой? Я использую раскадровки.

ответ

3

Для работы с UIAppearance вы должны установить внешний вид элемента управления перед загрузкой изображения или созданием элемента управления. Если вы создаете элемент управления программным способом вы можете сделать, как (образец кода)

[[UIStepper appearance]setTintColor:[UIColor redColor]]; 
UIStepper *stepper = [[UIStepper alloc]init]; 
[self.view addSubview: stepper]; 

или попытаться установить появление в application didFinishLaunchingWithOptions.

UIAppearance.h От

Чтобы настроить появления для экземпляров класса, содержащихся в экземпляре класса контейнера или экземпляров в иерархии, используйте + appearanceWhenContainedIn: для соответствующего внешнего вида прокси. Например:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTintColor:myNavBarColor]; 
[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], [UIPopoverController class], nil] setTintColor:myPopoverNavBarColor]; 
[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil] setTintColor:myToolbarColor]; 
[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], [UIPopoverController class], nil] setTintColor:myPopoverToolbarColor]; 
+0

Там мы идем! Спасибо, мужик! Новый урок узнал, но как я могу это сделать, если я хочу изменить внешний вид во время запуска? – PaperThick

+0

Измените внешний вид перед тем, как перейти к этому представлению. предположим, что у вас есть два контроллера View VC1 и VC2. установите вид кнопки в VC2 с VC1. я никогда не пробовал, но хоп это wil работы –

+0

Попробуем. Спасибо! – PaperThick

0

Вызовите свой код перед тем, как начать класс - вне класса.

Смежные вопросы