美文网首页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