iOS 导航栏问题汇总

1、导航栏设置的颜色和实际的颜色有差别

这里是因为导航栏默认是有透明度的,添加self.navigationController.navigationBar.translucent = NO; 将导航栏设置成不透明的即可。

2、设置导航栏背景颜色可以使用

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

默认带有一定透明效果,可以使用self.navigationController.navigationBar.translucent = NO;去除系统效果

3、改变导航栏的字体颜色(只改变导航的颜色,不改变状态栏的)

[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]}];

4、将状态栏和导航栏字体全变为白色

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

5、改变导航栏字体大小

[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor],NSFontAttributeName:[UIFont systemFontOfSize:25]}];

6、为导航栏设置背景图片

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"image"] forBarMetrics:UIBarMetricsDefault];

7、导航栏透明

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]
 self.navigationController.navigationBar.shadowImage = [UIImage new];

8、导航栏设置透明后,在设置为不透明

[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:nil];

9、将导航栏标题修改为一个图片或者logo

self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo"]];

10、隐藏返回按钮的返回两个字

UIBarButtonItem *item = [UIBarButtonItem appearance];
[item setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault];

11、修改导航栏返回箭头图片 (全局的),必须要两个都设置,并且图片要设置成不渲染

UINavigationBar * bar = [UINavigationBar appearance];
bar.backIndicatorTransitionMaskImage = [UIImage imageNamed:@"back"];
bar.backIndicatorImage = [UIImage imageNamed:@"back"];

12、修改导航栏返回箭头和文字的颜色

self.navigationController.navigationBar.tintColor  = [UIColor redColor];

13、使用UINavigationController时,push到的子页面,左上角会是系统自动取值上一层父页面的title名称。在push前通过设置navigationItem的backBarButtonItem可以直接更换文字

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:nil action:nil];  
self.navigationItem.backBarButtonItem = item;  

你可能感兴趣的:(iOS 导航栏问题汇总)