由于我是 Swift 新手,正在编写我的 FYP,所以我有多个 VC,现在我将通过 .pushViewController(nextVC,animated: true) 访问下面附加的 VC。我试图使导航栏透明,以便背景图像将显示在导航栏后面:
目前我的导航栏如下所示:
这是我的代码,
override func viewDidLoad() {
super.viewDidLoad()
//------
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
}
希望你们能理解我的问题。任何帮助将不胜感激。 谢谢
最佳答案
经过长时间的斗争,我得到了问题的解决方案。您可以说这很棘手,但可能对您使用 Xcode 9 及更高版本和 swift 4 有帮助。
关于我的问题,我通过pushViewController()来到这个VC,所以当我到达那个VC时,我只是在这里使用ViewWillAppear()来改变我的NavBar,然后从这个VC移回以前的 VC 或任何其他 Controller ,因此我需要重置原始导航以支持其原始样式,为此我使用 viewWillDisappear()。
第 1 步:
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.navigationBar.shadowImage = nil
self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
self.navigationController?.navigationBar.isTranslucent = true
}
第 2 步:
为了增加导航栏的高度,我在导航项的提示中添加了空格,并将 y 坐标设置为 -20,以将导航栏从 Storyboard 到达导航栏下方的状态栏顶部。
第 3 步:最后一步是
我已将 Storyboard 中导航栏下的 Alpha 值设置为 0.5
这就是我的全部,而且对我来说非常有效。您还可以在上述所有步骤之后看到我的输出。
关于ios - 带背景的自定义导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50433891/