不确定是否可行,但有没有办法根据时间更改状态栏颜色?我正在摆弄这段代码:
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()
}
}
答案 0 :(得分:2)
其他答案对我不起作用,所以这是我的工作解决方案,关于这个answer:
第1步将以下内容添加到info.plist
:
View controller-based status bar appearance
的 NO
第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
}
答案 1 :(得分:0)
是的,而只是实现和ovveride
override var preferredStatusBarStyle: UIStatusBarStyle {
let hour = NSCalendar.current.component(.hour, from: NSDate() as Date)
switch hour{
case 1..<6: .lightContent
break
case 7..<18: .darkContent
break
case 19..<24: .lightContent
break
default: .darkContent
}
不要将var放在另一个不做任何事情的方法中。
答案 2 :(得分:0)
我使用@ SeanLintern88方法,只是添加&#34;返回&#34;
override var preferredStatusBarStyle: UIStatusBarStyle {
let hour = NSCalendar.current.component(.hour, from: NSDate() as Date)
switch hour{
case 1..<6: return.lightContent
case 7..<18: return.default
case 19..<24: return.lightContent
default: return.default
}
}