Swift 3中的倒数计时器
独立编程(阅读:在家)可能具有挑战性(阅读:由于Netflix),所以当我在Uber的《纽约女性密码》活动中听到Susan LoVaglio的闪电演讲中的Pomodoro技术时,我立即被卖掉了。 简而言之,Pomodoro技术是一种生产率方法,您可以在25分钟的间隔内完成一个目标,在此间隔5分钟。 对于像我这样管理博客,工作搜索和构建自己的应用程序的人来说,这似乎是实现自己的每个目标的好方法。
为了创建一个倒数计数器,我创建了一个Timer对象的实例。
在情节提要上,我创建了一个工具栏,并向其中添加了3个按钮按钮项:播放,暂停和重置。
在第20行上,您将看到一个布尔属性,用于标识计时器何时开启。
var timerIsOn = false
然后,我为每个工具栏按钮创建了IBActions函数:“重置”-> resetTapped,“暂停”-> pauseBtnTapped,“播放”-> playBnTapped。
对于我的playBtnTapped函数,请执行以下操作:
- 显示以前隐藏的进度条
- 如果计时器当前未打开,则创建一个timeInterval为1秒的Timer对象,其对象为“ self”(当前视图控制器),并调用我的方法timerRunning()
- 由于我现在已经创建了一个计时器,该计时器现在正在运行,因此我将timerIsOn的布尔值更改为true。
@IBAction func playBtnTapped(_ sender:Any){
// 1
progressView.isHidden =否
// 2
如果!timerIsOn {
timer = Timer.scheduledTimer(timeInterval:1.0,target:self,选择器:#selector(timerRunning),userInfo:nil,重复:true)
// 3
timerIsOn = true
}
}
单击播放按钮时将调用此timerRunning方法。 当我的倒数计时器变为0(零)时,此方法负责填充进度栏。
func timerRunning(){
timeRemaining-= 1
让completePercentage = Int((((Float(totalTime)-Float(timeRemaining))/ Float(totalTime))* 100)
progressView.setProgress(Float(timeRemaining)/ Float(totalTime),动画:false)
progressLabel.text =“ \(completionPercentage)%完成”
let minutesLeft = Int(timeRemaining)/ 60%60
let secondsLeft = Int(timeRemaining)%60
timeLabel.text =“ \(minutesLeft):\(secondsLeft)”
manageTimerEnd(秒:timeRemaining)
isOnBreak = true
}
暂停方法还需要编写:
- 我在计时器对象上调用.invalidate方法。
- 我将timerIsOn的布尔值更改为false。
@IBAction func pauseBtnTapped(_ sender:Any){
// 1
timer.invalidate()
// 2
timerIsOn = false
}
接下来,我编写resetButton函数方法:
- 我将计时器对象置于无效状态。
- 我将timeRemaining的值分配为1500秒(即25分钟),并指定当前的timeLabel来反映这一点。
- 我将timerIsOn布尔值更改为false。
@IBAction func resetTapped(_ sender:Any){
// 1
timer.invalidate()
// 2
剩余时间= 1500
timeLabel.text =“ 25:00”
// 3
timerIsOn = false
}
让我知道您是否在下一个应用程序中使用倒数计时器!