美文网首页iOS技术资料iOS开发进阶
swift 同时修改状态栏和导航栏出现的问题及解决的方法

swift 同时修改状态栏和导航栏出现的问题及解决的方法

作者: 晨曦中的花豹 | 来源:发表于2017-11-20 14:06 被阅读0次

    在网上看了很多资料,都是独自设置导航栏或者状态栏,但是在我们的项目里面有这样一个问题:
    我们的首页需要隐藏导航栏并且状态栏的颜色是白色,
    而push出来的界面需要显示导航栏并且状态栏颜色设置成黑色,这个时候出现一个导航栏错乱的问题,push出来的界面导航栏跑到了首页,并且再push后导航栏却不见了

    首页截图

    IMG_0114.PNG

    push页截图

    IMG_0115.PNG

    出现问题的首页

    IMG_0116.PNG

    这个问题思来想去都不知道为什么,还是没有办法,最后想了一个可以解决这一问题的方法,具体怎么修改状态栏和导航栏这里就不说了,主要说下两者同时修改出现问题的解决方式

    我试了一下,如果不改变状态栏的颜色(具体说应该是不改变状态栏类型),就不会出现这种情况,那我就从这一地方入手,我们可以在首页完全展示的时候再去修改状态栏

    var statusType:UIStatusBarStyle = .lightContent
    
    override func viewDidAppear(_ animated: Bool) {
            super.viewDidAppear(animated)
            statusType = .lightContent
            setNeedsStatusBarAppearanceUpdate()
        }
        
        override var preferredStatusBarStyle: UIStatusBarStyle {
            
            return statusType
            
        }
        
        @objc func buttonAction() {
            navigationController?.pushViewController(TwoViewController(), animated: true)
            statusType = .default
        }
    

    主要思路就是在push的时候记录跳转界面的状态栏颜色,在首页没有完全显示的时候,状态栏始终与push界面保持一致,当完全展示后,在viewDidAppear中,修改成白色,再主动调用一次修改状态栏颜色的方法setNeedsStatusBarAppearanceUpdate()

    这一方法我觉得只能解决一时的问题,并不是长久之计,所以我希望看到的小伙伴如果有更好的方法可以一起分享下,我的QQ:1459709117,一起进步哦!!!

    相关文章

      网友评论

        本文标题:swift 同时修改状态栏和导航栏出现的问题及解决的方法

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