ルートで始まるアプリがありますUINavigationController
。次に、このコントローラーは他のさまざまなものをプッシュおよびポップUIViewControllers
します。これらはすべて正常に機能します。
私のアプリには、のカスタムグラフィックがありnavigationController.navigationBar.backgroundImage
ます。iPhoneプラットフォーム用の画像が1つあります。iPadプラットフォームには2つの画像があります。1つは縦向き、もう1つは横向きです。iPadは回転するときに問題となるプラットフォームであり、iPhoneプラットフォームは縦向きのみです。
-(void)willRotateToInterfaceOrientation:
プラットフォームがiPadの場合は、回転を検出し、navigationBar.backgroundImage
を正しい方向のグラフィックに設定するためのコードをすでに記述していました。
iPad5.0シミュレーターでは-正常に動作します。画面上でiPadを回転させると、向きに関係なく正しいナビゲーションバーグラフィックが表示されます。
デバイス上-動作しません-グラフィックは、iPadデバイスの起動時に縦向きで正しく表示されます。横向きに回転すると、navigationBarが標準の灰色に変わります。灰色の「スティック」を後ろに回転させると。
私は電話をかけてみ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];
}
}
}