美文网首页
iOS11:UINavigationBar 透明度设置

iOS11:UINavigationBar 透明度设置

作者: Empty_One | 来源:发表于2017-10-24 10:00 被阅读1095次

    iOS11 真的是太坑了,界面偏移什么的都是小事,最头疼的是 iPhone X,状态栏 44 什么鬼,tabbar 83 ??. 吐槽到此为止,谁让咱们是吃这碗饭的呢,下面开始干货.

    1.问题描述:
    iOS11 以前很多界面设置了 navBar 的透明度,随着 scrollview 的滑动动态改变透明度,但是更新 iOS 11后发现在 viewWillAppear 中设置透明度后会被重新渲染(时间关系还没来得及深究),导致界面刚进来时 navBar 是完全不透明的,但是手动滑动后效果没变.

    2.目标样式:

    Simulator Screen Shot - iPhone 8 - 2017-10-24 at 10.02.38.png

    3.解决方法:
    在 viewWillAppear 中通过 setBackgroundImage 方法实现:

    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor colorWithRed:209/255.0 green:13/255.0 blue:29/255.0 alpha:(offset / 64)>0.99?0.99:(offset / 64)]] forBarMetrics:UIBarMetricsDefault];
    [self.navigationController.navigationBar setShadowImage:[UIImage imageWithColor:[UIColor colorWithRed:209/255.0 green:13/255.0 blue:29/255.0 alpha:(offset / 64)>0.99?0.99:(offset / 64)]]];
    

    这里注意一下, alpha 不能给 1 .如果给 1 系统会默认你的 VC 是位于 Nav 下方的,导致 VC 向下偏移 Nav 的高度.

    在 viewWillDisappear 中置为 nil :

    [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
    [self.navigationController.navigationBar setShadowImage:nil];
    //在 push 后因为 navBar 没有图片为白色,会造成下个界面 puch 出来时有白色闪光
    [self.navigationController setNavigationBarHidden:YES animated:NO];
    

    在 viewDidDisappear 中显示 Nav:

        [self.navigationController setNavigationBarHidden:NO animated:NO];
    
    

    到此就完成了,欢迎小伙伴把有问题的地方指出来,或者其他问题相互讨论.

    相关文章

      网友评论

          本文标题:iOS11:UINavigationBar 透明度设置

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