嘿,可以使用小时和分钟来更改应用程序中的背景图片吗?例如,在7:30的日出,它将背景更改为日出图片,并且经过的时间也将在特定的小时和分钟更改为早晨。如果可以,如何快速设置。谢谢
答案 0 :(得分:1)
如果您要谈论的是在HomeScreen上更改iOS背景,否。 Swift无法为您提供超过iOS的功能。 但是,如果您正在谈论更改应用程序中的背景以反映一天中的时间,那么绝对有可能。解决此问题的最佳方法是使用AppDelegate.swift文件中名为
的函数检查打开应用程序的时间。applicationDidBecomeActive
在那里,您需要捕获日期并将其设置为全局变量(有关不熟悉的情况,请参见here的详细信息)
在将Date设置为全局变量之后,需要在应用程序加载视图时告诉您的应用程序更改背景。这只是该代码实际外观的伪代码,但希望对您有所帮助:
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.
希望这会有所帮助!让我知道您是否有任何疑问!
答案 1 :(得分:0)
您可以这样做:
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
}
}
}
答案 2 :(得分:-2)
AppDelgate中的以下方法将完成此工作。 func applicationWillEnterForeground(_ application:UIApplication){ //作为从后台到非活动状态的过渡的一部分调用;在这里,您可以撤消输入背景时所做的许多更改。 }
打开/启动应用程序时将调用此方法。根据时间更改应用的背景。