通常用的是此方法,来修改导航条的颜色
self.navigationController.navigationBar.barTintColor = [Common hexStringToColor:@"47a8ef"];
那么,问题是,实际上系统导航栏其实是半透明状态的,颜色会有色差!
颜色会变的比平常的淡!!
我们只需要改变导航条的半透明状态 — translucent属性
self.navigationController.navigationBar.translucent = NO;
这样,导航条的颜色 就会和我们设置的需要颜色一样
so,开始为这个设置 填上那些坑吧!!
以上设置之后,你会发现 你所画的view / scrollview //等 怎么又下移的64? 你会怀疑你之前设置的这行代码,
self.automaticallyAdjustsScrollViewInsets = NO; //取消导航栏自动适应
是否未被添加,是否开启或关闭
,然而,无论你怎么设置这行代码,都不会产生效果,(还是空出64)
而如果你只是把你导航条下面的view//scrollview 的frame.origin.y 设置为0,(这样可以解决)
但是! 那又让你其他的frame一起要跟着变动!太麻烦了!
这时候,你需要这行代码;
设置一下自己view的初始位置
self.edgesForExtendedLayout = UIRectEdgeNone;
这样填写一下,导航条下面view 下移的问题就可以解决,同时,导航栏背景色的问题也得以解决, 还不需要修改你已经设置好的view的frame,
(ps: 这个时候,关闭不关闭导航栏的自动布局已经无关紧要了,应为只要关闭了导航栏的透明属性,self.automaticallyAdjustsScrollViewInsets = NO; 就会自动失效 )
导航栏下面还有条横线呢??
在导航条颜色 以及下面是scrollview颜色终于一样,位置终于接在一起之后,为啥还有条1xp不到的线栏在中间? 百度之后,也找到了一个合适的方法,方法不用多,够用就好!
主要思路,
在导航条上寻找到这根1xp不到的线, 然后在view的生命周期里,隐藏掉他们!!!!!!!
UIImageView *_lineVIew;
- (void)viewDidLoad {
[super viewDidLoad];
_lineVIew = [self findlineviw:self.navigationController.navigationBar];
}
-(UIImageView*)findlineviw:(UIView*)view{
if ([view isKindOfClass:[UIImageView class]]&&view.bounds.size.height<=1.0) {
return (UIImageView*) view;
}for (UIImageView *subview in view.subviews) {
UIImageView *lineview = [self findlineviw:subview];
if (lineview) {
return lineview;
}
}
return nil;
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
_lineVIew.hidden = YES;
}
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
_lineVIew.hidden = YES;
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
_lineVIew.hidden = YES;
}