web-dev-qa-db-ja.com

IOS 7でナビゲーションバーの色を変更するにはどうすればいいですか?

IOS 7でナビゲーションバーの色を変更する方法

基本的に私はTwitter Nav Bar(TwitterをiOS7に更新)のようなものを実現したいと思っています。私はview controllerの上にナビゲーションバーを埋め込んだ。一番上にあるユーティリティバーと一緒にナビゲーションバーの色をライトブルーに変更するだけです。私は私のstoryboardにオプションが見つからないようです。

202
Patricio Guerra

IOS 7.0では、barに対するtintColorの動作が変更されました。バーの背景には影響しなくなりました。

ドキュメントから:

barTintColorクラス参照

ナビゲーションバーの背景に適用する色合いです。

@property(nonatomic, retain) UIColor *barTintColor

討論
半透明プロパティをNOに設定しない限り、この色はデフォルトで半透明になります。

在庫状況

IOS 7.0以降で利用可能です。

宣言されている
UINavigationBar.h

コード

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7) {
    // iOS 7.0 or later   
    self.navigationController.navigationBar.barTintColor = [UIColor redColor];
    self.navigationController.navigationBar.translucent = NO;
}else {
    // iOS 6.1 or earlier
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
}

iOS 7 UI移行ガイド に記載されているように、これを使用してiOSのバージョンを確認することもできます。

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
        // iOS 6.1 or earlier
        self.navigationController.navigationBar.tintColor = [UIColor redColor];
    } else {
        // iOS 7.0 or later     
        self.navigationController.navigationBar.barTintColor = [UIColor redColor];
        self.navigationController.navigationBar.translucent = NO;
    }

EDIT xibを使う

enter image description here

313
Rajneesh071

元の質問である古いTwitterのNav Barの外観、白いテキストの青い背景を得るために求められたことを実行するのは、XcodeのInterface Builderを使用するだけで非常に簡単です。

  • ドキュメントアウトラインを使用して、ナビゲーションバーを選択します。
  • 「属性」インスペクタの「ナビゲーションバー」グループで、「スタイル」を「デフォルト」から「黒」に変更します。これにより、ナビゲーションバーとステータスバーの背景色が黒に、テキストが白に変わります。そのため、アプリの実行中は、ステータスバーに表示されるバッテリーやその他のアイコンやテキストは白く表示されます。
  • 同じNavigation Barグループで、Bar Tintを好みの色に変更します。
  • ナビゲーションバーにバーボタンの項目がある場合でも、それらのテキストはデフォルトの青い色で表示されるので、「属性」インスペクタの「表示」グループで、「色合い」を「白」に変更します。

それはあなたがあなたが望むものを得るはずです。これは、どこで変更を加えるべきかを見やすくするためのスクリーンショットです。

Where to make the necessary changes, including the result in iOS Simulator

バーの色合いのみを変更しても、ナビゲーションバーまたはステータスバーのテキストの色は変わりません。スタイルも変更する必要があります。

120
alondono
self.navigationBar.barTintColor = [UIColor blueColor];
self.navigationBar.tintColor = [UIColor whiteColor];
self.navigationBar.translucent = NO;

// *barTintColor* sets the background color
// *tintColor* sets the buttons color
70
pNre

ナビゲーションベースのアプリでは、コードをAppDelegateに入れることができます。より詳細なコードは次のとおりです。

// Navigation bar appearance (background and title)

[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor titleColor], NSForegroundColorAttributeName, [UIFont fontWithName:@"FontNAme" size:titleSize], NSFontAttributeName, nil]];

[[UINavigationBar appearance] setTintColor:[UIColor barColor]];

// Navigation bar buttons appearance

[[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor textBarColor], NSForegroundColorAttributeName, shadowColor, NSShadowAttributeName, [UIFont fontWithName:@"FontName" size:titleSize], NSFontAttributeName, nil];
44
RFG

viewDidLoadに次のように設定します。

    self.navigationController.navigationBar.barTintColor = [UIColor blueColor];

好きな色に(blueColor)を変更してください。

22
zeezoo

Swiftの場合はナビゲーションバーの色を変更します。

    self.navigationController?.navigationBar.barTintColor = UIColor.redColor()

タイトルのフォント、サイズ、色を変更する:

    self.title = "title"
    self.navigationController?.navigationBar.titleTextAttributes = [
        NSForegroundColorAttributeName : UIColor.whiteColor(),
        NSFontAttributeName : UIFont(name: "Futura", size: 30)!
    ]
13
William Hu

16進コードを使用したい場合は、これが最善の方法です。

まず、あなたのクラスの一番上でこれを定義します。

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

それから、 "application didFinishLaunchingWithOptions"の中に、これを置きます

[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x00b0f0)];

00b0f0の代わりに16進数コードを入力してください。

12
Kyle Greenlaw

IOS 7では、-barTintColorプロパティを使用する必要があります。

navController.navigationBar.barTintColor = [UIColor barColor];
11
RFG

あなたがios6とios7をサポートする必要があるならば、あなたはあなたの UIViewController でこれを使用してその特定のライトブルーを手に入れます。

- (void)viewDidLoad {
    [super viewDidLoad];
    NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
    if ([[ver objectAtIndex:0] intValue] >= 7) {
        self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:89/255.0f green:174/255.0f blue:235/255.0f alpha:1.0f];
        self.navigationController.navigationBar.translucent = NO;
    }else{
        self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:89/255.0f green:174/255.0f blue:235/255.0f alpha:1.0f];
    }
}
11
bbaassssiiee

私がここで見た答えよりも実際には簡単です。

1) Just make sure you select the navigation bar on the Navigation control. 
2) Select the color you want in the bar tint.
3) You have other options too, and/or individually on each view (just play with it).

これが誰かに役立つことを願っています。私は見た答えが嫌いでした。私は自分のコードをできるだけきれいにしておくのが好きです。プログラム的にやるのは間違っていると言っているのではありませんが、私のような人がそこにいます。 Changing color of the navigation bar

9
pqsk

Rajneesh071のコードを完成させるには、デフォルトの動作がiOS 6から7に変更されたため、ナビゲーションバーのタイトルの色(および必要に応じてフォント)を設定することもできます。

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7)
{
    self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
    self.navigationController.navigationBar.translucent = NO;
    NSMutableDictionary *textAttributes = [[NSMutableDictionary alloc] initWithDictionary:mainNavController.navigationBar.titleTextAttributes];
    [textAttributes setValue:[UIColor whiteColor] forKey:UITextAttributeTextColor];
    self.navigationController.navigationBar.titleTextAttributes = textAttributes;
}
else
{
    self.navigationController.navigationBar.tintColor = [UIColor blackColor];
}
4
CodeBrew

このコードのみをViewContorller または AppDelegateに追加してください

if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
{
    //This is For iOS6
    [self.navigationController.navigationBar setTintColor:[UIColor yellowColor]];
}
else
{
    //This is For iOS7
    [self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]];
}
4
//You could place this code into viewDidLoad
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
    //change the nav bar colour
    self.navigationController.view.backgroundColor = [UIColor redColor];
    //change the background colour
    self.navigationController.navigationBar.translucent = NO;
 }   
//Or you can place it into viewDidAppear
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:(BOOL)animated];
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
    //change the nav bar colour
    self.navigationController.view.backgroundColor = [UIColor redColor];
    //change the background colour
    self.navigationController.navigationBar.translucent = NO;
}
3
Dashony

ナビゲーションベースのアプリケーションでは色を変更できます

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7) {
    self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];
    self.navigationController.navigationBar.translucent = NO;
} else {
    self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];
}
3
Salim
#define _kisiOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)


  if (_kisiOS7)
    {
        [[UINavigationBar appearance] setBarTintColor:[UIcolor redcolor]];
    }
    else
    {
        [[UINavigationBar appearance] setBackgroundColor:[UIcolor blackcolor]];
        [[UINavigationBar appearance] setTintColor:[UIcolor graycolor]];
    }
3
Mubin Shaikh
- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
}
2
Gaurav Gilani

色について:

[[UINavigationBar appearance] setBarTintColor:[UIColor blackColor]];

イメージ用

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBar_320X44.png"] forBarMetrics:UIBarMetricsDefault];
2
user4952581

この質問とこれらの答えは役に立ちます。彼らと一緒に私は私の希望する濃い青navigationBar色を白いタイトルとボタンテキストで設定することができました。

しかし、私はまた、時計、搬送波、信号強度などを白に変える必要がありました。黒は濃い青とコントラストが不十分でした。

私は前の答えの1つでその解決策を見落としていたかもしれませんが、私はこの変更を私のトップレベルviewControllerviewDidLoadに追加することによってその変更を加えることができました:

[self.navigationController.navigationBar setBarStyle:UIStatusBarStyleLightContent];
2
John