导航栏背景色修改&导航栏下面的横线消除

通常用的是此方法,来修改导航条的颜色

    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;
}

终于,可以看到完美的样式了
上图:导航栏背景色修改&导航栏下面的横线消除_第1张图片

你可能感兴趣的:(无缝衔接,导航条背景,透明属性,导航条下面的线)