在 swift 中更改特定小时和分钟的背景

Change background with specific Hour and minutes in swift

嘿,是否可以使用小时和分钟来更改应用程序中的背景图像?例如 7:30 的日出,它会将背景更改为日出图片,随着时间的流逝,它也会在特定的时间和分钟变为早晨。如果可以如何设置swift。谢谢

如果您是在谈论更改主屏幕上的 iOS 背景,不。 Swift 并没有比 iOS 给你更多的能力。 但是,如果您正在谈论更改应用程序中的背景以反映一天中的时间,那么这绝对是可能的。最好的方法是在您的应用程序打开后立即使用 AppDelegate.swift 文件中名为

的函数检查时间
applicationDidBecomeActive

到达那里后,您需要捕获日期并将其设置为全局变量(如果您不熟悉,请参阅 here 了解有关如何执行此操作的更多信息)

将日期设置为全局变量后,您需要告诉应用程序在加载视图时更改背景。这只是代码实际外观的伪代码,但我希望它能有所帮助:

let sunRiseTime : Date = //insert date you would like the background to change here.
let noon : Date = //insert date for noon here
let sunriseBackgroundImage : UIImage = //insert image you would like for the sunrise here
let noonBackgroundImage : UIImage = //insert image you would like for noon here.

if(dateGlobalVariable >= sunriseTime){
self.backgroundImage = sunriseBackgroundImage
}else if(dateGlobalVariable >= noon{
self.backgroundImage = noonBackgroundImage
} 
//continue this for as many images as you have.

希望这对您有所帮助!如果您有任何问题,请告诉我!

你可以这样做:

func setupTimer(hour: Int, minute: Int, second: Int, newColor: UIColor){
    let calendar = Calendar.current.date(bySettingHour: hour, minute: minute, second: second, of: Date())

    let timer = Timer(fireAt: calendar!, interval: 0, target: self, selector: #selector(changeBackground(_:)), userInfo: UIColor.gray, repeats: true)
    RunLoop.main.add(timer, forMode: .common)

}



@objc func changeBackground(_ timer: Timer?){
    if let newColor = timer?.userInfo as? UIColor {

        DispatchQueue.main.async {
        self.view.backgroundColor = newColor
        }
    }
}

AppDelgate 中的以下方法将完成这项工作。 func applicationWillEnterForeground(_ application: UIApplication) { // 作为从后台到非活动状态转换的一部分调用;在这里您可以撤消进入后台时所做的许多更改。 }

这将在应用程序 opened/launched 时被调用。根据时间更改应用程序的背景。