美文网首页
iOS导航栏颜色不一致问题

iOS导航栏颜色不一致问题

作者: 飞奔的小鲨鱼 | 来源:发表于2019-11-09 20:28 被阅读0次

    有时候我们会遇到设置了导航栏的颜色,但是显示的颜色与我们设置的色值有偏差,我们可以通过以下方法解决。
    方法1:

    - (void)viewWillAppear:(BOOL)animated{
        [super viewWillAppear:animated];
        [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
        [self.navigationController.navigationBar setShadowImage:[UIImage new]];
    }
    - (void)viewWillDisappear:(BOOL)animated{
        [super viewWillDisappear:animated];
        [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
        [self.navigationController.navigationBar setShadowImage:nil];
    }
    

    ps: 在viewWillAppearviewWillDisappear 这两个方法中设置,是因为在自定义的导航控制器中统一设置了导航栏的颜色,只是处理在单个页面中色值不一致的问题。但这也会出现一个问题,如果在自定义的导航控制器中统一设置了导航栏的背景图片,还需要处理这些单独的页面,如果多的话就会很麻烦。

    方法2:
    之所以会出现色差的问题,是因为导航栏有个毛玻璃的效果,只要把translucent设置为NO就可以了。

    - (void)viewWillAppear:(BOOL)animated{
        [super viewWillAppear:animated];
        self.navigationController.navigationBar.translucent = NO;
       // 去除导航条底部的细线 
        for(UIView *subview in self.navigationController.navigationBar.subviews){
            for (UIView *view in subview.subviews) {
                if ([view isKindOfClass:[UIImageView class]] && view.bounds.size.height < 1) {
                    view.hidden = YES;
                    self.shadowImageView = view;
                }
            }
        }
    }
    
    - (void)viewWillDisappear:(BOOL)animated{
        [super viewWillDisappear:animated];
        self.navigationController.navigationBar.translucent = YES;
        self.shadowImageView.hidden = NO;
    }
    

    相关文章

      网友评论

          本文标题:iOS导航栏颜色不一致问题

          本文链接:https://www.haomeiwen.com/subject/dtinbctx.html