转换后iOS状态栏背景变黑
Posted
技术标签:
【中文标题】转换后iOS状态栏背景变黑【英文标题】:iOS statusBar background goes to black after transition 【发布时间】:2018-06-06 13:05:44 【问题描述】:我正在从 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
但是我在转换时得到了这个奇怪的黑色状态栏:
Here is a sample project
这是预期的过渡:
【问题讨论】:
这与 statusBar 背景无关。尝试更改它的浅色内容,您将能够在两个屏幕上看到状态栏。这与您的导航栏有关,在中转时会变黑,并且您的状态栏是黑暗的,因此看起来像是状态栏问题。 所以我想更改导航栏的中转颜色以避免像 twitter 那样出现这个问题 设置self.navigationController?.navigationBar.backgroundColor = .clear
时,您会看到窗口也是黑色的。因此,将您的窗口背景颜色设置为某种颜色而不是黑色,那么您会看到不同之处。
我没有推特,请您也为推特添加相同的动画吗?
@TheTiger 我添加了一张图片来显示我想要的目标
【参考方案1】:
你可以试试下面,
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)
【讨论】:
这越来越好,问题是我还需要将 isTranslucent 设置为 true,因为我想要透明,当我返回时,我需要设置回 false 你可以设置 self.navigationController?.navigationBar.isTranslucent = true,它会给你同样的输出 @Godfather 对你有帮助吗? 它有帮助,但并不完全像我展示的那样。有了这个,导航栏在过渡后会出现很多问题,但无论如何还是谢谢!以上是关于转换后iOS状态栏背景变黑的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS8 中使用 clipsToBounds = YES 时,状态栏完全变黑。我该如何改变?
使用 ActionMode 时,Lollipop 状态栏变黑