ナビゲーションバーの色を変えたいのですが、色合いや背景を変えるべきかどうかわかりません。iOS 7 がよりフラットなデザインを目指していることは知っていますが (グラデーションの削除を推奨しています)、この 2 つを解読するのに苦労しています。背景色を設定しても、何もしません。
この画像では、背景は緑に設定されていますが、バーはまだ青です。
ナビゲーションバーの色を変えたいのですが、色合いや背景を変えるべきかどうかわかりません。iOS 7 がよりフラットなデザインを目指していることは知っていますが (グラデーションの削除を推奨しています)、この 2 つを解読するのに苦労しています。背景色を設定しても、何もしません。
この画像では、背景は緑に設定されていますが、バーはまだ青です。
バーの tintColor の動作が iOS 7.0 で変更されました。バーの背景に影響を与えなくなり、UIView に追加された tintColor プロパティで説明されているように動作します。バーの背景に色合いを付けるには、-barTintColor を使用してください。
navController.navigationBar.barTintColor = [UIColor navigationColor];
iOS 7 に似たiOS 6のナビゲーション バーを単色にしたい場合は、次のようにします。
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundColor:[UIColor greenColor]];
iOS 7barTintColor
では、次のように使用します。
navigationController.navigationBar.barTintColor = [UIColor greenColor];
また
[[UINavigationBar appearance] setBarTintColor:[UIColor greenColor]];
// iOS 7 の場合:-
[self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]];
// iOS 6 の場合:-
[self.navigationController.navigationBar setTintColor:[UIColor yellowColor]];
背景色プロパティは では無視されるUINavigationBar
ため、ルック アンド フィールを調整したい場合は、 を使用するか、 UINavigationBar クラス リファレンスtintColor
の「バーの外観のカスタマイズ」にリストされている他のメソッドを呼び出す必要があります( など)。setBackgroundImage:forBarMetrics:
iOS 7 ではプロパティの動作が異なることに注意してくださいtintColor
。そのため、iOS 7 と以前のバージョンの間で一貫した外観が必要な場合は、背景画像を使用するのが最善の方法です。また、ストーリーボードで背景画像を構成できないことにも注意してください。 を作成しIBOutlet
て、または他の適切な場所UINavigationBar
で変更する必要があります。viewDidLoad
もう1つ、 UIPopoverでナビゲーションbgの色を変更したい場合は、に設定barStyle
する必要がありますUIBarStyleBlack
if([UINavigationBar instancesRespondToSelector:@selector(barTintColor)]){ //iOS7
navigationController.navigationBar.barStyle = UIBarStyleBlack;
navigationController.navigationBar.barTintColor = [UIColor redColor];
}
iOS 6 と 7 の両方で正しく設定する方法を次に示します。
+ (void)fixNavBarColor:(UINavigationBar*)bar {
if (iosVersion >= 7) {
bar.barTintColor = [UIColor redColor];
bar.translucent = NO;
}else {
bar.tintColor = [UIColor redColor];
bar.opaque = YES;
}
}
iOS のバージョンを確認し、ナビゲーション バーの色合いを簡単に設定できます。
if (SYSTEM_VERSION_LESS_THAN(@"7.0")) {
self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.9529 green:0.4392 blue:0.3333 alpha:1.0];
}else{
self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:0.9529 green:0.4392 blue:0.3333 alpha:1.0];
self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
投稿された回答に基づいて、これは私にとってはうまくいきました:
/* check for iOS 6 or 7 */
if ([[self navigationController].navigationBar respondsToSelector:@selector(setBarTintColor:)]) {
[[self navigationController].navigationBar setBarTintColor:[UIColor whiteColor]];
} else {
/* Set background and foreground */
[[self navigationController].navigationBar setTintColor:[UIColor whiteColor]];
[self navigationController].navigationBar.titleTextAttributes = [[NSDictionary alloc] initWithObjectsAndKeys:[UIColor blackColor],UITextAttributeTextColor,nil];
}
AppDelegate.m の didFinishLaunchingWithOptions() に以下のコードを挿入します。
[[UINavigationBar appearance] setBarTintColor:[UIColor
colorWithRed:26.0/255.0 green:184.0/255.0 blue:110.0/255.0 alpha:1.0]];
you can add bellow code in appdelegate.m .if your app is navigation based
// for background color
[nav.navigationBar setBarTintColor:[UIColor blueColor]];
// for change navigation title and button color
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],
NSForegroundColorAttributeName,
[UIFont fontWithName:@"FontNAme" size:20],
NSFontAttributeName, nil]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
iOS7 では、ナビゲーション コントローラーがタブ バー、スプリットビュー、またはその他のコンテナーに含まれている場合、ナビゲーション バーの外観をグローバルに変更するには、次のメソッドを使用します::
[[UINavigationBar appearanceWhenContainedIn:[UITabBarController class],nil] setBarTintColor:[UIColor blueColor]];