У меня есть приложение, которое начинается с рута UINavigationController
.Затем этот контроллер выдвигает и выводит различные другие UIViewControllers
- все работает нормально.
Мое приложение имеет пользовательскую графику для navigationController.navigationBar.backgroundImage
.Есть одно изображение для платформы iPhone.Для платформы iPad есть два изображения - одно для портрета, другое для пейзажа.IPad является платформой для выпуска, поскольку он вращается, платформа iPhone только для портрета.
Я уже написал код в -(void)willRotateToInterfaceOrientation:
для определения поворота и установил navigationBar.backgroundImage
в правильную ориентацию графики,если платформа iPad.
В симуляторе iPad 5.0 - работает нормально;вращение iPad на экране приводит к правильной графике навигационной панели независимо от ориентации.
На устройстве - это не работает - Изображение отображается правильно при запуске устройства iPad в портретной ориентации.Когда я поворачиваюсь в альбомную ориентацию, панель навигации меняется на стандартную серую.Когда я поворачиваю назад, серые «палочки».
Я пытался позвонить setNeedsDisplay
- без изменений.
Я попытался установить navigationBar.tintColor = [UIColor clearColor]
- без изменений.
Я проверил, что имена файлов графики в коде идентичны фактическим именам файлов - они являются
Код для поворота:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
return YES; }
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
UIImage *titleImage = [UIImage imageNamed:@"StandardHeaderIpadLandscape"];
self.navigationController.navigationBar.tintColor = [UIColor clearColor];
[self.navigationController.navigationBar setBackgroundImage:titleImage forBarMetrics:UIBarMetricsDefault];
self.navigationController.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"StandardBackgroundiPadLandscape.png"]];
[self.navigationController.navigationBar setNeedsDisplay];
} else {
UIImage *titleImage = [UIImage imageNamed:@"StandardHeaderIpadPortrait"];
self.navigationController.navigationBar.tintColor = [UIColor clearColor];
[self.navigationController.navigationBar setBackgroundImage:titleImage forBarMetrics:UIBarMetricsDefault];
self.navigationController.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"StandardBackgroundiPad.png"]];
[self.navigationController.navigationBar setNeedsDisplay];
}
}
}