iOS 7でナビゲーションバーの色を変更するにはどうすればよいですか?
基本的に私はTwitter Nav Bar(iOS7
そのために更新されたTwitter )のようなものを実現したいと考えています。の上にナビゲーションバーを埋め込みましたview controller
。必要なのは、上部のユーティリティバーと共に、ナビゲーションバーの色を水色に変更することだけです。にオプションが見つからないようですstoryboard
。
iOS 7でナビゲーションバーの色を変更するにはどうすればよいですか?
基本的に私はTwitter Nav Bar(iOS7
そのために更新されたTwitter )のようなものを実現したいと考えています。の上にナビゲーションバーを埋め込みましたview controller
。必要なのは、上部のユーティリティバーと共に、ナビゲーションバーの色を水色に変更することだけです。にオプションが見つからないようですstoryboard
。
回答:
tintColor
forバーの動作はiOS 7.0で変更されました。バーの背景には影響しなくなりました。
ドキュメントから:
barTintColor クラスリファレンス
ナビゲーションバーの背景に適用するティントカラー。
@property(nonatomic, retain) UIColor *barTintColor
説明
この色は、translucentプロパティをに設定しない限り、デフォルトで半透明になりますNO
。
可用性
iOS 7.0以降で利用できます。
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
元の質問が行ったこと、つまり古いTwitterのナビゲーションバーの外観、青い背景に白いテキストを取得することは、XcodeのInterface Builderを使用するだけで非常に簡単です。
それはあなたがあなたが望むものを得るはずです。変更箇所を簡単に確認できるスクリーンショットを次に示します。
バーの濃淡のみを変更しても、ナビゲーションバーまたはステータスバーのテキストの色は変更されないことに注意してください。スタイルも変更する必要があります。
Default
を確認しましたBlack
が、iOS 9でも引き続き使用できます。廃止されたものはBlackOpaque
およびでBlackTranslucent
、Black
スタイルと半透明のチェックボックスの組み合わせに置き換えられました。Appleの開発者向けWebサイトの
self.navigationBar.barTintColor = [UIColor blueColor];
self.navigationBar.tintColor = [UIColor whiteColor];
self.navigationBar.translucent = NO;
// *barTintColor* sets the background color
// *tintColor* sets the buttons color
ナビゲーションベースのアプリでは、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];
[[UINavigationBar appearance] setBarTintColor:[UIColor barColor]];
iOS 7向けに追加
ナビゲーションバーの色をすばやく変更するには:
self.navigationController?.navigationBar.barTintColor = UIColor.red
タイトルのフォント、サイズ、色を変更:
self.title = "title"
self.navigationController?.navigationBar.titleTextAttributes = [
NSAttributedString.Key.foregroundColor : UIColor.white,
NSAttributedString.Key.font : UIFont(name: "Futura", size: 30)!
]
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]
次に、「アプリケーションdidFinishLaunchingWithOptions」内に次のように配置します。
[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x00b0f0)];
00b0f0の代わりに16進コードを入力します。
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];
}
}
これは、私がここで見た答えよりも実際には簡単です。
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).
これが誰かの役に立つことを願っています。見た答えが気に入らなかった。私は自分のコードをできるだけきれいにしておくのが好きです。プログラムでそれを行うのは間違っていると言っているわけではありませんが、私のような人がいます...これは皆さんのためです。
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];
}
このコードのみを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]];
}
//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;
}
ナビゲーションベースのアプリケーションでは、色を変更できます
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];
}
#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]];
}
この質問とこれらの回答は役に立ちます。彼らと私はnavigationBar
白いタイトルとボタンのテキストで希望の濃い青色を設定することができました。
ただし、クロック、キャリア、信号強度などを白に変更する必要もありました。黒は濃い青とのコントラストが不十分でした。
私は以前の回答の1つでその解決策を見落としていたかもしれませんが、この行をトップレベルviewController
のに追加することでその変更を行うことができましたviewDidLoad
:
[self.navigationController.navigationBar setBarStyle:UIStatusBarStyleLightContent];
UIStatusBarStyleLightContent
動作しますが、正しい列挙型は次のようsetBarStyle:
ですUIBarStyleBlack
色について:
[[UINavigationBar appearance] setBarTintColor:[UIColor blackColor]];
画像用
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBar_320X44.png"] forBarMetrics:UIBarMetricsDefault];