首页 > 解决方案 > 转换后iOS状态栏背景变黑

问题描述

我正在从 UINavigationController 内的 VC1 推送到 VC2。VC2 有一个透明的导航栏。

在 VC2 内部的 viewDidLoad 中:

self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.barTintColor = .clear
self.navigationController?.navigationBar.backgroundColor = .clear

当我按下后退按钮时,我想恢复导航栏(绿色),所以在 viewWillDissapear 里面我有以下内容:

self.navigationController?.navigationBar.isTranslucent = false
self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
self.navigationController?.navigationBar.barTintColor = .green
self.navigationController?.navigationBar.backgroundColor = .green

但是我在转换时得到了这个奇怪的黑色状态栏:

顶部有奇怪的黑线在此处输入图像描述

这是一个示例项目

这是预期的过渡: 在此处输入图像描述

标签: iosswiftuinavigationbar

解决方案


你可以试试下面,

override func viewDidLoad() {
    super.viewDidLoad()

    UINavigationBar.appearance().backgroundColor = .clear
    UINavigationBar.appearance().barTintColor = .clear

    self.navigationController?.navigationBar.shadowImage = UIImage()
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    UINavigationBar.appearance().backgroundColor = .green
    UINavigationBar.appearance().barTintColor = .green

    self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
}

推荐阅读