web-dev-qa-db-ja.com

iOS 7または6でナビゲーションバーの色を変更する方法

ナビゲーションバーの色を変更したいのですが、色合いや背景を変更する必要があるかどうかわかりません。 iOS 7はよりフラットなデザインを目指しています( グラデーションの削除を推奨 でも)が、この2つを解読するのに苦労しています。背景色を設定しても、何もしません。

この画像では、背景は緑に設定されていますが、バーは青のままです:

Enter image description here

64
EGHDK

バーのtintColorの動作はiOS 7.0で変更されました。バーの背景には影響しなくなり、UIViewに追加されたtintColorプロパティの説明どおりに動作します。バーの背景に色を付けるには、-barTintColorを使用してください。

navController.navigationBar.barTintColor = [UIColor navigationColor];

107
Mahesh

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]];
79
carmen_munich

// iOS 7の場合:-

[self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]];

// iOS 6の場合:-

[self.navigationController.navigationBar setTintColor:[UIColor yellowColor]];
36
Ashish

背景色プロパティはUINavigationBarでは無視されるため、ルックアンドフィールを調整する場合は、tintColorを使用するか、「バーの外観のカスタマイズ」にリストされている他のメソッドを呼び出す必要があります。 INavigationBarクラス参照 の(setBackgroundImage:forBarMetrics:のような)。

IOS 7ではtintColorプロパティの動作が異なることに注意してください。iOS7と以前のバージョンとの間で一貫した外観を望む場合は、背景画像を使用するのが最善の策です。また、ストーリーボードで背景画像を構成できないことも言及する価値があります。IBOutletUINavigationBarに作成し、viewDidLoadまたはその他の適切な場所で変更する必要があります。 。

11
Charles A.

もう1つ、ナビゲーションの背景色をIPopoverで変更する場合は、barStyleUIBarStyleBlackに設定する必要があります

if([UINavigationBar instancesRespondToSelector:@selector(barTintColor)]){ //iOS7
    navigationController.navigationBar.barStyle = UIBarStyleBlack;
    navigationController.navigationBar.barTintColor = [UIColor redColor];
}
5
null

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];
}
4
PRITAM SATPUTE

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;
    }
}
4
pizzamonster

バージョンチェック付きの完全なコード。

 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]];
}
4
kalan

投稿された回答に基づいて、これは私のために働いた:

/* 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];
}
3

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]];
2
    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]];
2
Hitesh Vaghela

IOS7では、Navigation ControllerがTab Bar、SplitView、または他のコンテナに含まれている場合、Navigationbarの外観をグローバルに変更するには、次のメソッドを使用します::

[[UINavigationBar appearanceWhenContainedIn:[UITabBarController class],nil] setBarTintColor:[UIColor blueColor]];
1
muzz

ナビゲーションバーの色を変更する場合は、barTintColorプロパティを使用します。さらに、色をtintColorに設定すると、ボタンのようなナビゲーションバーのアイテムに影響します。

参考までに、iOS 6スタイルバーを保持し、背景画像を以前のスタイルのように設定して設定します。

詳細については、次のリンクから詳細情報を入手できます。

https://developer.Apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html

1
Kyokook Hwang

次のコード(C#)を使用して、NavigationBarの色を変更しています。

NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.Default);
NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.LandscapePhone);
NavigationController.NavigationBar.BackgroundColor = UIColor.Green;

秘Theは、デフォルトの背景画像を取り除く必要があり、それから色が表示されることです。

1
tomec

ViewController.m- (void)viewDidLoadで以下のコードを試してください

[[[self navigationController] navigationBar] setTintColor:[UIColor yellowColor]];

これはiOS 6で機能しました。試してみてください。

0
geet Sebastian