根据时间更改状态栏颜色

根据时间更改状态栏颜色

不知道是否可能,但是有没有办法根据时间更改状态栏颜色?我在摆弄这段代码:

import UIKit

class testTimeController: UIViewController{

func lightstatusbar() {
var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
 }
}

  func darkstatusbar() {
var preferredStatusBarStyle: UIStatusBarStyle {
    return .default
}
}

override func viewDidLoad() {
    super.viewDidLoad()
let hour = NSCalendar.current.component(.hour, from: NSDate() as Date)

 switch hour{
    case 1..<6: lightstatusbar()
        break
    case 7..<18: darkstatusbar()
        break
    case 19..<24: lightstatusbar()
        break
    default: darkstatusbar()
    }
}

最佳答案

其他答案对我不起作用,所以这是我关于此answer的有效解决方案:

步骤1 将以下内容添加到info.plist中:

具有布尔值View controller-based status bar appearanceNO
ios - 根据时间更改状态栏颜色-LMLPHP

步骤2 将此添加到application(_:didFinishLaunchingWithOptions:)中的AppDelegate.swift中:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

  let hour = NSCalendar.current.component(.hour, from: NSDate() as Date)

  switch hour {
  case 1..<6:
    UIApplication.shared.statusBarStyle = .lightContent
  case 7..<18:
    UIApplication.shared.statusBarStyle = .default
  case 19..<24:
    UIApplication.shared.statusBarStyle = .lightContent
  default:
    UIApplication.shared.statusBarStyle = .default
  }

  return true
}

10-08 05:24