self.navigationController.navigationBar.translucent(这个是设置半透明效果,当该属性设置为YES时,导航栏有半透明效果,会在bar上添加一层半透明的图层,当该属性为NO时,导航栏bar背景为白色,如果bartintColor会设置成背景色)
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];(这句话是把这个透明的图层设置为没有,bartintcolor 消失)
[self.navigationController.navigationBar setShadowImage:[UIImage new]];这句话是把导航栏底下的黑线设置为没有
self.extendedLayoutIncludesOpaqueBars = YES;UIViewController的View和导航栏的显示是这样的, 默认的, 如果导航栏设置为有透明度的(默认就是半透明的), UIViewController的View就会被导航栏覆盖
如果不想被覆盖, 可以使用以下代码解决(控制器中调用):
self.edgesForExtendedLayout = UIRectEdgeNone;
反之, 如果导航栏是不透明的, 默认UIViewController的View就会往下移, 在导航栏下显示, 如果不想往下移, 可以实现如下代码(控制器中调用):
self.extendedLayoutIncludesOpaqueBars = YES;
[UINavigationBar appearance]可以设置全局的导航栏设置
UIView *in = [[UIView alloc]initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 64)];
UIColor *color = [UIColor clearColor];
in.backgroundColor = color;
[self.navigationController.navigationBar.subviews.firstObject insertSubview:in atIndex:0];
创建一个View插进navigationBar的backgroupView就可以改变颜色,当这个view透明时,translucent不能为NO详细看第一条