×

关于导航栏的一些总结

96
LoserJay
2017.08.29 10:19* 字数 352

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详细看第一条

iOS-控件
Web note ad 1