设置导航颜色
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:1]];
[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x067AB5)];
设置导航文字颜色
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
设置导航背景
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav_bg.png"] forBarMetrics:UIBarMetricsDefault];
设置多个导航按钮
UIBarButtonItem *shareItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:nil];
UIBarButtonItem *cameraItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:nil];
NSArray *actionButtonItems = @[shareItem, cameraItem];
self.navigationItem.rightBarButtonItems = actionButtonItems;
设置导航字体
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8];
shadow.shadowOffset = CGSizeMake(0, 1);
[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName, shadow, NSShadowAttributeName, [UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:21.0], NSFontAttributeName, nil]];
ios7以下的版本设置导航栏背景颜色可以使用
[[UINavigationBar appearance] setTintColor:[UIColor orangeColor]];
ios7以后:
[[UINavigationBar appearance] setBarTintColor:[UIColor orangeColor]];
默认带有一定透明效果,可以使用以下方法去除系统效果
[navigationController.navigationBar setTranslucent:NO];
公司项目需要将状态栏的文字颜色设置为白色,以下方法即可
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
改变后需要及时刷新的调用
[viewController setNeedsStatusBarAppearanceUpdate];
如果没有效果,需要在plist文件里设置
View controller-based status bar appearance = NO
info.plist中 View controller-based status bar appearance这个属性 View controller-based status bar appearance =NO 这个设置为:View Controller 不对status Bar 显示进行操作
// 设置statusBar的背景部分
navigationBar的setBarTintColor接口,用此接口可改变statusBar的背景色
注意:一旦你设置了navigationBar的- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics接口,那么上面的setBarTintColor接口就不能改变statusBar的背景色,statusBar的背景色就会变成纯黑色。
// 代码里设置statusBar的前景部分
在plist里增加一行 UIStatusBarStyle(或者是“Status bar style”也可以),这里可以设置两个值,就是上面提到那两个
UIStatusBarStyleDefault 和 UIStatusBarStyleLightContent
这样在app启动的launch页显示的时候,statusBar的样式就是上面plist设置的风格。
// 代码设置statusBar的前景部分
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
不仅如此,ios还很贴心的在UIViewController也增加了几个接口,
目的是让状态栏根据当前显示的UIViewController来定制statusBar的前景部分。
-
- (UIStatusBarStyle)preferredStatusBarStyle;
-
- (UIViewController *)childViewControllerForStatusBarStyle;
-
- (void)setNeedsStatusBarAppearanceUpdate
设置导航颜色
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:1]];
[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x067AB5)];
设置导航文字颜色
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
设置导航背景
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav_bg.png"] forBarMetrics:UIBarMetricsDefault];
设置多个导航按钮
UIBarButtonItem *shareItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:nil];
UIBarButtonItem *cameraItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:nil];
NSArray *actionButtonItems = @[shareItem, cameraItem];
self.navigationItem.rightBarButtonItems = actionButtonItems;
设置导航字体
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8];
shadow.shadowOffset = CGSizeMake(0, 1);
[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName, shadow, NSShadowAttributeName, [UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:21.0], NSFontAttributeName, nil]];
ios7以下的版本设置导航栏背景颜色可以使用
[[UINavigationBar appearance] setTintColor:[UIColor orangeColor]];
ios7以后:
[[UINavigationBar appearance] setBarTintColor:[UIColor orangeColor]];
默认带有一定透明效果,可以使用以下方法去除系统效果
[navigationController.navigationBar setTranslucent:NO];
公司项目需要将状态栏的文字颜色设置为白色,以下方法即可
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
改变后需要及时刷新的调用
[viewController setNeedsStatusBarAppearanceUpdate];
如果没有效果,需要在plist文件里设置
View controller-based status bar appearance = NO
info.plist中 View controller-based status bar appearance这个属性 View controller-based status bar appearance =NO 这个设置为:View Controller 不对status Bar 显示进行操作
// 设置statusBar的背景部分
navigationBar的setBarTintColor接口,用此接口可改变statusBar的背景色
注意:一旦你设置了navigationBar的- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics接口,那么上面的setBarTintColor接口就不能改变statusBar的背景色,statusBar的背景色就会变成纯黑色。
// 代码里设置statusBar的前景部分
在plist里增加一行 UIStatusBarStyle(或者是“Status bar style”也可以),这里可以设置两个值,就是上面提到那两个
UIStatusBarStyleDefault 和 UIStatusBarStyleLightContent
这样在app启动的launch页显示的时候,statusBar的样式就是上面plist设置的风格。
// 代码设置statusBar的前景部分
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
不仅如此,ios还很贴心的在UIViewController也增加了几个接口,
目的是让状态栏根据当前显示的UIViewController来定制statusBar的前景部分。
-
- (UIStatusBarStyle)preferredStatusBarStyle;
-
- (UIViewController *)childViewControllerForStatusBarStyle;
-
- (void)setNeedsStatusBarAppearanceUpdate