UINavigationBar导航栏相关设置

设置导航颜色

[[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的背景部分

navigationBarsetBarTintColor接口,用此接口可改变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的背景部分

navigationBarsetBarTintColor接口,用此接口可改变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


猜你喜欢

转载自blog.csdn.net/ai_pple/article/details/51077077