如何在有限的时间内显示按钮?

时间:2019-04-29 16:33:55

标签: ios swift timer uibutton

我有一个UIButton:@IBAction func button1(_ sender: Any) { }。我想要的是在用户下载应用程序后仅显示两天,然后我希望它消失。

我创建了一个(倒数计时器):

var timer:Timer?
var time = 172800 //2Days

然后我创建了此函数:

@objc func passedTime(){
    time -= 1

    if time <= 0 {
        timer!.invalidate()
        timer = nil
    }
}

在我的viewDidLoad中:

timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(passedTime), userInfo: nil, repeats: false)  

显然,即使用户也关闭了该应用程序,我也希望继续进行下去。

1 个答案:

答案 0 :(得分:2)

关闭应用程序后无法运行计时器。用户打开应用程序时,您需要执行以下操作:

class DailyWorker(ctx: Context, params: WorkerParameters) : Worker(ctx, params) 
{
    override fun doWork(): Result {
        // Do Something

        val now = LocalTime.now()
        val nineAM = LocalTime.parse("09:00:00")
        val timeDiff = Duration.ofHours(24).minus(Duration.between(nineAM, now))
        val dailyWorkRequest = OneTimeWorkRequestBuilder<DailyWorker>()
                .setInitialDelay(timeDiff)
                .addTag(TAG_OUTPUT)
                .build()
        WorkManager.getInstance(applicationContext).enqueue(dailyWorkRequest)

        return Result.success()
    }
}