私はルートUINavigationController
で始まるアプリを持っています。このコントローラーは、プッシュし、さまざまな他のUIViewControllers
をポップ - すべて正常に動作します。UINavigationbarが回転時に設定イメージを失う
私のアプリにはnavigationController.navigationBar.backgroundImage
のカスタムグラフィックがあります。 iPhoneプラットフォーム用の画像が1つあります。 iPadプラットフォームには2つの画像があります.1つは肖像画用、もう1つは風景用です。 iPadは回転するにつれて問題のプラットフォームになり、iPhoneプラットフォームは肖像画のみになります。
私は既に-(void)willRotateToInterfaceOrientation:
にコードを書いて回転を検出し、プラットフォームがiPadの場合はnavigationBar.backgroundImage
を正しい向きのグラフィックに設定しました。
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];
}
}
} titleImage
がゼロであるか否かを
私たちに回転方法を教えてください。 'navigationBar'が最初にnilかどうか確認してください。その後、関連するその他の潜在的な問題について議論することができます。 – an0
ありがとう、上記のコードを追加しました。私はNSLogとの存在を確認しましたが、それは存在します。 – Skybird
アプリをランドスケープで起動するとどうなりますか?その場合、画像が表示されますか? – Bek