请原谅我的英语,我不是很流利。
我有一个有10次锻炼的应用程序,我想给每个锻炼一些时间,例如: 第一次锻炼:30秒 第二次锻炼:40秒
但就目前而言,我只能为每次训练提供相同的秒数以进行所有锻炼..
这就是我以前的工作:
#define EXERCISELENGTH 30
#define EXERCISELENGTH1 40
#define RESTLENGTH 10
- (void)tick
{
if (self.inCountdown && (countdown == 0)) {
self.inCountdown = NO;
self.inExercise = YES;
countdown = EXERCISELENGTH;
[self workoutUI];
[self updateUI];
workoutIndex++;
}
if (self.inExercise && (countdown == 0)) {
self.inExercise = NO;
self.inRest = YES;
countdown = RESTLENGTH;
[self restUI];
[self updateUI];
}
if (self.inRest && (countdown == 0)) {
self.inRest = NO;
self.inExercise = YES;
countdown = EXERCISELENGTH;
[self workoutUI];
[self updateUI];
workoutIndex++;
if (workoutIndex == 10) {
[self doneUI];
[self.timer invalidate];
return;
}
}
[self updateUI];
countdown--;
}
任何帮助都将不胜感激。
谢谢
答案 0 :(得分:0)
你有很多选择:
如果您想每30秒调用一次锻炼方法,请使用:
[NSTimer scheduledTimerWithTimeInterval:30.0
target:self
selector:@selector(workoutMethod)
userInfo:nil
repeats:YES];
如果您想在30秒后调用锻炼方法,请使用:
[self performSelector:@selector(workoutMethod) withObject:nil afterDelay:30.0];
如果您想在开始锻炼方法后开始倒数计时器,请使用以下示例:CountDown Timer ios tutorial?
答案 1 :(得分:0)
如果您想要一个倒数计时器,您应该设置一个重复的NSTimer
,它会触发每秒钟左右更新一次显示的动作。但是,该操作应使用系统时间计算剩余时间。所以,你的代码应该:
您的计时器操作应该:
您 想要做的是依靠计时器以1秒的间隔触发。 NSTimer
的解决方案是每个'}可以关闭0.1秒,这意味着30个滴答可以最多关闭3秒。使用系统时间,例如CACurrentMediaTime()
,将提供更准确的时钟并避免误差累积。