美文网首页
导航栏设计成透明状态,后引发的问题以及解决方案

导航栏设计成透明状态,后引发的问题以及解决方案

作者: 我还能在进一步 | 来源:发表于2019-02-27 21:17 被阅读0次

    请参考最近做的EMUI9.0:

    初步效果图

    导航栏设计思路:

    采取透明背景的方式设计导航栏。

    参考方法:

    -(void)viewWillAppear:(BOOL)animated {

        [super viewWillAppear:animated];

        //设置导航栏背景图片为一个无图的image,导航栏会加载空imgae,就自然透明掉了

        [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];

        //同理透明掉导航栏下划线

        [self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];

        // 修改状态栏颜色

        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//设置状态栏字体为白色

    }

    因为修改了系统的导航栏,因此在界面即将销毁的情况下

    - (void)viewWillDisappear:(BOOL)animated {

        [super viewWillDisappear:animated];

        //导航栏的背景图和下划线都置空,就会回到默认的设置了

        [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];

        [self.navigationController.navigationBar setShadowImage:nil];

        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];//设置状态栏字体为默认的黑色

    }

    如果您在返回的时候,设置了背景图片

      [self.navigationController.navigationBar setBackgroundImage:[UIImage imageName:@"****.png"] forBarMetrics:UIBarMetricsDefault];

       [self.navigationController.navigationBar setShadowImage:[UIImage imageName:@"****.png"]];

    您会发现一个神奇的效果。涉及下一个界面继承于UIScrollView的类如(UITableview 等)的界面会下移64.

    这个时候您可能需要设置一个参数

    self.extendedLayoutIncludesOpaqueBars = YES;

    这个方法: 从属性名就可以得知该属性的功能:拓展布局是否包含不透明的导航栏。

    相关文章

      网友评论

          本文标题:导航栏设计成透明状态,后引发的问题以及解决方案

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