3

私はルート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がゼロであるか否かを

+0

私たちに回転方法を教えてください。 'navigationBar'が最初にnilかどうか確認してください。その後、関連するその他の潜在的な問題について議論することができます。 – an0

+0

ありがとう、上記のコードを追加しました。私はNSLogとの存在を確認しましたが、それは存在します。 – Skybird

+0

アプリをランドスケープで起動するとどうなりますか?その場合、画像が表示されますか? – Bek

答えて

1

チェック。あなたの画像パスが正しくない、またはそれらの画像がiPadに正しくコピーされていないと感じています。

+0

こんにちは、あなたはtitleImage == nilをチェックしています。私のNSLogをトリップしますか?今、私はなぜ地球上でそれがゼロであるのかを考えなければなりません。実際、肖像画の画像は回転中には全く表示されません。私はそれを確認しませんでした。それはあまりにも明白でした。ハブリス! – Skybird

+0

Resolved - 両方のファイルの名前を小文字に変更しました。作品。それは私の人生の2時間です。私は戻ってこないでしょう。多くのありがとうan0。 – Skybird

関連する問題