快速更改特定小时和分钟的背景

时间:2018-11-27 21:34:18

标签: ios swift date datetime nsdate

嘿,可以使用小时和分钟来更改应用程序中的背景图片吗?例如,在7:30的日出,它将背景更改为日出图片,并且经过的时间也将在特定的小时和分钟更改为早晨。如果可以,如何快速设置。谢谢

3 个答案:

答案 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){         //作为从后台到非活动状态的过渡的一部分调用;在这里,您可以撤消输入背景时所做的许多更改。 }

打开/启动应用程序时将调用此方法。根据时间更改应用的背景。