UINavigationBar setBackgroundImage:forBarMetrics: портретная/пейзажная странность

Перейдя на iOS5, я хотел использовать UINavigationBar в пользовательском стиле, используя следующий фрагмент кода:

if ([navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:
                                                                         forBarMetrics:)]) {
        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"NavigationBar.png"] 
                                           forBarMetrics:UIBarMetricsDefault];
        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"NavigationBarLandscape.png"] 
                                           forBarMetrics:UIBarMetricsLandscapePhone];
    }

Это работает довольно хорошо, но: мое пользовательское изображение имеет закругленные углы (см. прикрепленные изображения), что приводит к следующему:

Начиная с портретного режима, он выглядит нормально.

Портрет (обычный)

Переход в ландшафтный режим также выглядит хорошо.

Пейзаж (обычный)

Однако при возврате в портретный режим изображение не меняется на NavigationBar.png, поэтому в правом верхнем углу нет закругленного угла.

Портрет (без закругленного угла в правом верхнем углу)

Любые советы о том, как решить эту проблему, приветствуются.

// редактировать

Добавление следующего кода в мой viewController удаляет эту «ошибку», но это не может быть правильным решением!?!

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 
    [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation 
                                            duration:duration];
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"NavigationBar.png"] 
                                                  forBarMetrics:UIBarMetricsDefault];
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"NavigationBarLandscape.png"] 
                                                  forBarMetrics:UIBarMetricsLandscapePhone];
}

person tilo    schedule 19.06.2012    source источник


Ответы (1)


Поскольку в iOS6 по умолчанию используются закругленные углы, эта проблема скоро исчезнет.

person tilo    schedule 18.09.2012