如何使用 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 应用程序生命周期中更改特定视图的状态栏颜色?

在iOS8中使用Swift更改特定ViewControllers的状态栏颜色

Swift:更改 iOS 13 的状态栏颜色

Swift 4 - 特定视图控制器状态栏样式不变

swift xcode更改状态栏(背景颜色)

如何使用swift3增加导航栏的高度并更改xcode 8中状态栏的颜色?