iOS 7 でナビゲーション バーの色が正常に表示される
iOS 6.0 を導入していますが、システム バージョンが iOS 7.0 以降の場合、iPhone 4 ではナビゲーション バーの色の一部が正しく表示されません。iPhone 5 では正常に動作します。
これが私がやっている方法です:
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
self.edgesForExtendedLayout = UIRectEdgeNone;
[self.navigationController.navigationBar setBarTintColor:[UIColor blueColor]];
[self.navigationController.navigationBar setTranslucent:YES];
}
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
iPhone 4 には半透明性に問題があると聞いたので、最後の行 (setTranslucent) が問題かもしれませんが、iOS 6 でもナビゲーションバーを半透明に設定できると確信しています。次にそれを取り除き、何か修正があれば更新します。
編集:表示されたビュー コントローラーを閉じると、バーの色が消えるようです。しかし、iPhone 4 以外では台無しにはなりません。