【问题标题】:Custom Navigation Bar With Background带背景的自定义导航栏
【发布时间】:2018-05-20 10:31:35
【问题描述】:

由于我是 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
}

希望你们能理解我的问题。任何帮助将不胜感激。 谢谢

【问题讨论】:

  • 这个论坛上的任何人都可以帮助我。请

标签: ios uinavigationcontroller uinavigationbar swift4


【解决方案1】:

经过长期的斗争,我得到了问题的解决方案。您可以说这很棘手,但可能对您使用 Xcode 9 及更高版本和 swift 4 有所帮助。

关于我的问题,我通过 pushViewController() 来到这个 VC,所以当我到达那个 VC 时,我只是在这里使用 ViewWillAppear() 来更改我的 NavBar,然后从这个 VC 移回以前的 VC 或任何其他控制器,以便我需要重置原始导航以支持其原始样式,为此我使用 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步:最后是

我已将故事板导航栏下的 Alpha 值设置为 0.5

这就是我的全部,并且非常适合我。您还可以在上述所有步骤之后看到我的输出。

enter image description here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    相关资源
    最近更新 更多