在网上看了很多资料,都是独自设置导航栏或者状态栏,但是在我们的项目里面有这样一个问题:
我们的首页需要隐藏导航栏并且状态栏的颜色是白色,
而push出来的界面需要显示导航栏并且状态栏颜色设置成黑色,这个时候出现一个导航栏错乱的问题,push出来的界面导航栏跑到了首页,并且再push后导航栏却不见了
首页截图
IMG_0114.PNGpush页截图
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()
网友评论