Перейдя на 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];
}