我正在尝试创建一个twitter应用程序,使用twitter模仿真正的应用程序。在时间线视图上,我有一个常规导航栏,当用户点击用户配置文件时,配置文件视图有一个透明的条,以便显示用户的横幅图像。我使用以下代码使导航栏在用户配置文件视图中透明:
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true我遇到的问题是当我从配置文件视图返回时,时间线导航栏变得混乱(下面的截图)。我猜想这是因为我更改了概要视图视图控制器中导航栏的某些方面,并且在返回到时间线视图时继续使用。
如何逆转导航条的透明度以修复摇摇欲坠的导航条?在时间线视图控制器中,我尝试使用下面的代码来反转它,但是它不起作用。
self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
self.navigationController?.navigationBar.shadowImage = nil
self.navigationController?.navigationBar.isTranslucent = false带有常规导航条的时间线视图

带有透明导航栏的配置文件视图

从profile视图返回后的时间线视图,导航栏不稳定

发布于 2017-02-20 08:55:22
类似的情况也发生在我身上。后来,我注意到我没有在正确的生命周期metod中更改导航项的属性。在时间线视图控制器中的viewWillAppear中使其不透明,并在时间线视图控制器离开之前在viewWillDisappear中使其透明。这可能与此有关吗?
发布于 2019-04-25 10:44:01
在您正在更改导航栏的视图控制器中,执行以下操作
override func viewWillAppear(_ animated: Bool) {
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.isTranslucent = true
navigationController?.view.backgroundColor = .clear
super.viewWillAppear(animated)
}
override func viewWillDisappear(_ animated: Bool) {
navigationController?.navigationBar.isTranslucent = false
navigationController?.view.backgroundColor = .blue
super.viewWillDisappear(animated)
}发布于 2017-12-20 10:09:38
@朱利安,我和你有同样的问题。我有一个带有红色导航条的主视图,并且希望细节视图导航栏是透明的。我设法做到了,但在返回主视图时遇到了同样的故障。导航条保持透明1.5秒钟左右,然后返回原来的红色。我无法通过设置导航条的样式来解决这个问题,但是我设法用不同的方式修复了它。这不是一个首选的解决方案,但它已经花费了我很多小时,我对此很满意。
好的,我做的是创建一个ImageView,并在导航栏下与自动布局对齐。导航条的高度为44个像素,因此ImageView得到了y的位置-44。我给ImageView提供了导航条的红色,所以当它透明1.5秒时,用户实际上看到的是ImageView而不是导航条的颜色。
希望这对你也有帮助。
https://stackoverflow.com/questions/42332547
复制相似问题