美文网首页程序员
iOS 导航栏颜色差异及下面有一条黑线

iOS 导航栏颜色差异及下面有一条黑线

作者: 旅途开发者 | 来源:发表于2018-11-09 09:44 被阅读1次

    导航栏颜色差异:

    设置导航栏的 translucent 属性为 NO

    在单个界面设置

    self.navigationController.navigationBar.translucent = NO;
    

    如果是导航栏单独设置

     UINavigationBar * nav = [UINavigationBar appearance];
       //设置背景色
        nav.translucent = NO;
        nav.barTintColor = ColorPrimary;
     //设置字体颜色
        NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary];
        textAttrs[NSForegroundColorAttributeName] = White;
        [nav setTitleTextAttributes:textAttrs];
        [nav setTintColor:[UIColor whiteColor]];
    

    对于导航栏和下面controller中间有一条线的情况,解决办法是设置ShadowImage 属性,但是这个属性是设置那条线的显示情况,单独设置是不起作用的,只有同时设置 self.navigationController.navigationBar 的背景色才能起作用,所以这里设置self.navigationController.navigationBar 的背景色为空白图片,并且把 ShadowImage设置为空白图片 这样就不会显示出来那条黑线了,如果想把那条黑线改为其他颜色只需要修改 ShadowImage的图片就可以了

    对于单个界面

    -(void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
    //两句代码必须都有
        [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"无图片"] forBarMetrics:UIBarMetricsDefault];
        [self.navigationController.navigationBar setShadowImage:[UIImage new]];
    }
    -(void)viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
    //两句代码必须都有
        [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"无图片"] forBarMetrics:UIBarMetricsDefault];
        [self.navigationController.navigationBar setShadowImage:nil];
    }
    

    如果是全局设置(在UINavigationBar的封装类里面设置就可以了)

    //两句代码必须都要有
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"无图片"] forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
    [[UINavigationBar appearance] setShadowImage:[UIImage new]];
    

    相关文章

      网友评论

        本文标题:iOS 导航栏颜色差异及下面有一条黑线

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