如何使用 swift 在特定视图中更改状态栏颜色?
Posted
技术标签:
【中文标题】如何使用 swift 在特定视图中更改状态栏颜色?【英文标题】:how can i change the statusbar color in specifi view using swift? 【发布时间】:2015-09-29 00:51:42 【问题描述】:InViewDidLoad
UIApplication.sharedApplication().statusBarStyle = .LightContent
override func viewWillDisappear(animated: Bool)
super.viewWillDisappear(animated)
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.Default
通过参考上面的链接,我已经实现了。但是状态栏颜色没有改变,只有状态栏上的文本在改变。 Changing the Status Bar Color for specific ViewControllers using Swift in ios8
【问题讨论】:
【参考方案1】:默认情况下,状态栏后面没有单独的背景视图。它实际上只是覆盖在主视图的顶部,因此背景采用了它的颜色。
因此,如果您在导航控制器中嵌入了一个视图,它只会采用导航栏的颜色。如果没有,那么它将只采用主视图的颜色。
您可以创建一个位于顶部状态栏下方的单独视图并设置其背景。
正如迈克尔所说,下面的代码应该可以做到,但我已将宽度更改为设备的宽度,因此它适用于所有情况。
var statusBarView: UIView = UIView(frame: CGRectMake(0.0, 0.0, UIScreen.mainScreen().bounds.width, 20.0))
statusBarView.backgroundColor = UIColor.redColor()
view.addSubview(statusBarView)
【讨论】:
【参考方案2】:如果您的应用正在使用导航栏,则状态栏颜色将更改为与导航栏的颜色相匹配。
在没有导航栏的情况下,您可以在状态栏后面放置一个 20 点高的视图(例如,一些用颜色填充的视图),这就是向用户显示的颜色。
我找到了以上信息in this article
要快速做到这一点,也许可以这样做:
// make a view tall enough to fit under the status bar
var statusBarView: UIView = UIView(frame: CGRectMake(0.0, 0.0, 320.0, 20.0))
// give it some color
statusBarView.backgroundColor = UIColor.redColor()
// and add it to your view controller's view
view.addSubview(statusBarView)
【讨论】:
以上是关于如何使用 swift 在特定视图中更改状态栏颜色?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SwiftUI 应用程序生命周期中更改特定视图的状态栏颜色?