我的应用程序具有深色背景,但是在iOS 7中状态栏变为透明的。所以我看不到任何东西,只有角落的绿色电池指示灯。如何将状态栏文本颜色更改为白色,就像在主屏幕上一样?
将UIViewControllerBasedStatusBarAppearance要YES在文件的.plist。
UIViewControllerBasedStatusBarAppearance
YES
在viewDidLoad做一个[self setNeedsStatusBarAppearanceUpdate];
viewDidLoad
[self setNeedsStatusBarAppearanceUpdate];
添加以下方法:
- (UIStatusBarStyle)preferredStatusBarStyle
{ return UIStatusBarStyleLightContent; }
注意 :这不适用于内部控制器UINavigationController,请参阅下面的Tyson评论:)
UINavigationController
Swift 3- 这将在内部工作控制器UINavigationController。将此代码添加到您的控制器中。
// Preferred status bar style lightContent to use on dark background. // Swift 3 override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
Swift 5和SwiftUI
对于SwiftUI,创建一个新的swift文件,名为 HostingController.swift
HostingController.swift
import Foundation import UIKit import SwiftUI class HostingController: UIHostingController<ContentView> { override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } }
然后在 SceneDelegate.swift
SceneDelegate.swift
window.rootViewController = UIHostingController(rootView: ContentView())
至
window.rootViewController = HostingController(rootView: ContentView())