私のアプリでは、ナビゲーションバーを濃い青色に着色しています。
iOS6の新しいグラデーション効果により、ナビゲーションバーがはるかに明るく表示されます(以下を参照)。
iOS6を補うために色を暗く調整すると、iOS5では暗くなりすぎます。
それらを同じ(またはほぼ同じ)に見せるための最良の方法は何ですか?
OSのバージョンを検出し、異なる色合いの色を設定しますか?背景画像を使用しますか?または、グラデーションの動作を変更するために使用できるスタイル設定はありますか?
私のアプリでは、ナビゲーションバーを濃い青色に着色しています。
iOS6の新しいグラデーション効果により、ナビゲーションバーがはるかに明るく表示されます(以下を参照)。
iOS6を補うために色を暗く調整すると、iOS5では暗くなりすぎます。
それらを同じ(またはほぼ同じ)に見せるための最良の方法は何ですか?
OSのバージョンを検出し、異なる色合いの色を設定しますか?背景画像を使用しますか?または、グラデーションの動作を変更するために使用できるスタイル設定はありますか?
これを実現する 1 つの方法は、背景画像を使用し、iOS 5.0 で導入された Appearance プロキシを使用して設定することです。
薄い垂直スライス (幅 1 ピクセル、高さ 44 ピクセル、2 倍の Retina 画像など) の画像を作成してバンドルに追加すると、次の方法を使用してアプリを一度:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBarImage"] forBarMetrics:UIBarMetricsDefault];
アプリの起動時にそのコード行を実行すると、たとえば appDelegate の次のメソッドで
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
そうすれば、アプリケーション内のすべてのナビゲーション バーが同じように見えます。このようなイメージを使用する利点は、OS のバージョンや将来の変更に関係なく、アプリケーションが常に同じように見えることです。
Appearance プロキシ API は iOS 5.0 でのみ追加されたため、古いバージョンの iOS では動作しないことに注意してください。アピアランス プロキシの概要については、WWDC 2011 ビデオ セッション 114 をご覧になることをお勧めします。
私もこの問題を抱えていましたが、色合いを取り除き、代わりにこれを行うことで修正しました:
navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
navigationController.navigationBar.backgroundColor = [UIColor blackColor];
これは、スタイルを黒の半透明に変更したため、ユーザー インターフェイス/xib ファイルを変更する必要があることを意味することに注意してください。すべてを 44 ポイント押し下げる必要がありました。
これで、ナビゲーション バーは iOS 5 と iOS 6 で同じように見えるはずです。