ios - 带背景的自定义导航栏

标签 ios uinavigationcontroller uinavigationbar swift4

由于我是 Swift 新手,正在编写我的 FYP,所以我有多个 VC,现在我将通过 .pushViewController(nextVC,animated: true) 访问下面附加的 VC。我试图使导航栏透明,以便背景图像将显示在导航栏后面:

image

目前我的导航栏如下所示:

image

这是我的代码,

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

这就是我的全部,而且对我来说非常有效。您还可以在上述所有步骤之后看到我的输出。

enter image description here

关于ios - 带背景的自定义导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50433891/

相关文章:

ios - 如何使用 UIBezierPath 绘制弧线

iphone - 为什么 popToRootViewContoller 要么卡住要么需要很长时间才能执行?

ios - 从单独的类推送新的 UIViewController

objective-c - iOS 5 中的 setTitleView 奇怪行为 - objective-c

ios - iPhone 在 Xcode 中工作时不断断开连接

iphone - 如何处理被再次调用的类方法?

python - 减少 iPad 加速度计中的噪音

ios - 使用基于页面的导航将数组数据从一个界面传递到 watchkit 中的另一个界面?

iPhone iOS如何按需重绘UINavigationBar?

objective-c - iOS5:如何设置导航栏和导航工具栏的样式? (背景和尺寸)