在 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 时被调用。根据时间更改应用程序的背景。
嘿,是否可以使用小时和分钟来更改应用程序中的背景图像?例如 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 时被调用。根据时间更改应用程序的背景。