Проблема NavigationBarStyle при переключении с iOS 4 на 5 - PullRequest
1 голос
/ 18 октября 2011

После обновления до iOS 5 и Xcode 4.2

возникли небольшие проблемы с дизайном.

Вот как мой взгляд выглядел в iOS 4:

1 http://casperslynge.dk/1

И вот как это выглядит в iOS 5:

2 http://casperslynge.dk/2

В моем делегате по навигации у меня есть следующий метод для рисования "изображения" вверху:

- (void)drawRect:(CGRect)rect {
    UIImage *image;
    if(self.barStyle == UIBarStyleDefault){
        image = [UIImage imageNamed: @"topbar_base.png"];
    }
    else{
        image = [UIImage imageNamed: @"nyhedsbar_base.png"];    
    }
    [image drawInRect:CGRectMake(-1, -1, self.frame.size.width+3, self.frame.size.height+3)];
}

И внутри моего контроллера я установил следующее:

self.navigationBarStyle = UIBarStyleBlack;

Почему это не работает в iOS 5?

Спасибо

1 Ответ

6 голосов
/ 18 октября 2011

Под iOS5 вам нужно использовать UIAppearance. Посмотрите на это. Вот пример использования его условно, чтобы вы могли продолжать поддерживать iOS4:

// iOS5-only to customize the nav bar appearance
if ([[UINavigationBar class] respondsToSelector:@selector(appearance)]) {
    UIImage *img = [UIImage imageNamed: @"NavBarBackground.png"];
    [[UINavigationBar appearance] setBackgroundImage:img forBarMetrics:UIBarMetricsDefault];
}

Как видите, это устанавливает пользовательское фоновое изображение для всех UINavigationBars. Есть много вещей, которые вы можете сделать с UIAppearance. Возможно, вы захотите сохранить все пользовательские вещи, которые вы в данный момент делаете, в drawRect:, так как устройства на iOS до этого все равно будут использовать это, а не новый код UIAppearance.

...