ナビゲーションバーの色を変更したいのですが、色合いや背景を変更する必要があるかどうかわかりません。 iOS 7はよりフラットなデザインを目指しています( グラデーションの削除を推奨 でも)が、この2つを解読するのに苦労しています。背景色を設定しても、何もしません。
この画像では、背景は緑に設定されていますが、バーは青のままです:
バーのtintColorの動作はiOS 7.0で変更されました。バーの背景には影響しなくなり、UIViewに追加されたtintColorプロパティの説明どおりに動作します。バーの背景に色を付けるには、-barTintColorを使用してください。
navController.navigationBar.barTintColor = [UIColor navigationColor];
iOS 6 iOS 7に似たナビゲーションバーに単色を使用する場合は、これを使用します。
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundColor:[UIColor greenColor]];
in iOS 7次のようにbarTintColor
を使用します。
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
では無視されるため、ルックアンドフィールを調整する場合は、tintColor
を使用するか、「バーの外観のカスタマイズ」にリストされている他のメソッドを呼び出す必要があります。 INavigationBarクラス参照 の(setBackgroundImage:forBarMetrics:
のような)。
IOS 7ではtintColor
プロパティの動作が異なることに注意してください。iOS7と以前のバージョンとの間で一貫した外観を望む場合は、背景画像を使用するのが最善の策です。また、ストーリーボードで背景画像を構成できないことも言及する価値があります。IBOutlet
をUINavigationBar
に作成し、viewDidLoad
またはその他の適切な場所で変更する必要があります。 。
もう1つ、ナビゲーションの背景色をIPopoverで変更する場合は、barStyle
をUIBarStyleBlack
に設定する必要があります
if([UINavigationBar instancesRespondToSelector:@selector(barTintColor)]){ //iOS7
navigationController.navigationBar.barStyle = UIBarStyleBlack;
navigationController.navigationBar.barTintColor = [UIColor redColor];
}
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];
}
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;
}
}
バージョンチェック付きの完全なコード。
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
// do stuff for iOS 7 and newer
[self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]];
}
else {
// do stuff for older versions than iOS 7
[self.navigationController.navigationBar setTintColor:[UIColor yellowColor]];
}
投稿された回答に基づいて、これは私のために働いた:
/* 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では、Navigation ControllerがTab Bar、SplitView、または他のコンテナに含まれている場合、Navigationbarの外観をグローバルに変更するには、次のメソッドを使用します::
[[UINavigationBar appearanceWhenContainedIn:[UITabBarController class],nil] setBarTintColor:[UIColor blueColor]];
ナビゲーションバーの色を変更する場合は、barTintColor
プロパティを使用します。さらに、色をtintColor
に設定すると、ボタンのようなナビゲーションバーのアイテムに影響します。
参考までに、iOS 6スタイルバーを保持し、背景画像を以前のスタイルのように設定して設定します。
詳細については、次のリンクから詳細情報を入手できます。
次のコード(C#)を使用して、NavigationBarの色を変更しています。
NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.Default);
NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.LandscapePhone);
NavigationController.NavigationBar.BackgroundColor = UIColor.Green;
秘Theは、デフォルトの背景画像を取り除く必要があり、それから色が表示されることです。
ViewController.m
の- (void)viewDidLoad
で以下のコードを試してください
[[[self navigationController] navigationBar] setTintColor:[UIColor yellowColor]];
これはiOS 6で機能しました。試してみてください。