我希望在我的应用程序中创建一个倒数计时器,以便我可以提供一定的持续时间(例如15分钟或15:00)并从一个动作开始。
我还需要倒数计时器来从外部Web服务获取经过的持续时间和总持续时间信息,并开始倒计时剩余时间。
这实际上是针对测验应用程序,其中将向用户呈现一系列问题,并且计时器将被放置在问题屏幕上(对于整个测验而不是仅针对一个问题)。用户可以设置测验的持续时间,倒数计时器将在用户开始参加测验后立即开始。还有一个暂停功能,用户可以暂停测试,并且已经过的时间信息和总持续时间将在Web服务中注册。用户可以随着倒数计时器从暂停时开始随时恢复测验(从网络服务获取此信息,即)。
提前致谢。
PS:说实话,我不知道如何去做。关于什么格式将在Web服务中存储的时间以及许多其他内容(例如,如果NSTimer在循环运行之后程序将继续存在等)那么太混淆了。所以你知道我的意思。是的,NSTimer确实解决了这个问题,因为Alex告诉并提供了示例代码。答案 0 :(得分:3)
查看NSTimer的文档。
通常,您将创建一个每秒调用一次方法的NSTimer,如下所示:
NSTimer *theTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(tick) userInfo:nil repeats:YES];
然后在勾选中,您将减少保留剩余时间的变量,并更新显示屏上的标签。
另外,如果你想在GitHub上使用一些工作示例代码check out my little countdown app。
答案 1 :(得分:0)
试试这些代码,我已经在我的应用程序中实现了它。最适合重发OTP类型的功能。
int secondsLeft;
int hours, minutes, seconds;
secondsLeft = 60;
[self countdownTimer];
-(void)countdownTimer {
// secondsLeft = hours = minutes = seconds = 0;
timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateCounter:) userInfo:nil repeats:YES];
}
- (void)updateCounter:(NSTimer *)theTimer {
if(secondsLeft > 0 ) {
secondsLeft -- ;
hours = secondsLeft / 3600;
minutes = (secondsLeft % 3600) / 60;
seconds = (secondsLeft %3600) % 60;
labelSeconds.text = [NSString stringWithFormat:@"%02d seconds left.",seconds];
} else {
[timer invalidate];
return;
}
}