带背景的自定义导航栏
Posted
技术标签:
【中文标题】带背景的自定义导航栏【英文标题】: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
希望你们能理解我的问题。任何帮助将不胜感激。 谢谢
【问题讨论】:
这个论坛上的任何人都可以帮助我。请 【参考方案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
【讨论】:
以上是关于带背景的自定义导航栏的主要内容,如果未能解决你的问题,请参考以下文章