Pan*_*ios 4 objective-c nstimer countdown xcode4
我知道我应该了解Apple的NSTimer文档,但我不知道!我也读了很多关于它的问题,但找不到适合我的情况.那么这里是:
用户通过文本字段输入小时和分钟.我将它们转换为整数并将它们显示在"countDownLabel"中.
我知道我要求很多...如果有人可以提供帮助我真的很感激!
int intHourhs;
intHourhs=([textHours.text intValue]);
int intMinutes;
intMinutes=([textMinutes.text intValue]);
int *intSeconds;
intSeconds=0;
NSString *stringTotalTime=[[NSString alloc] initWithFormat:@"%.2i:%.2i:%.2i",intHourhs,intMinutes,intSeconds];
[countDownLabel setFont:[UIFont fontWithName:@"DBLCDTempBlack" size:45]];
countDownLabel.text=stringTotalTime;
Run Code Online (Sandbox Code Playgroud)
jba*_*100 17
首先,您应该计算您的倒计时时间,以秒为单位,并将其放入实例变量(ivar)
NSTimeInterval totalCountdownInterval;
Run Code Online (Sandbox Code Playgroud)
我认为为了保持良好的准确性(NSTimer发射可以关闭多达100毫秒并且错误会加起来)你应该记录倒计时开始的日期,并把它放在另一个ivar中:
NSDate* startDate = [NSDate date];
Run Code Online (Sandbox Code Playgroud)
然后,您可以定期(此时为1秒)定时触发计时器,重复调用您班上的方法
NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(checkCountdown:) userInfo:nil repeats:YES];
Run Code Online (Sandbox Code Playgroud)
在该方法中,您可以根据总倒计时时间检查已用时间并更新界面
-(void) checkCountdown:(NSTimer*)_timer {
NSTimeInterval elapsedTime = [[NSDate date] timeIntervalSinceDate:startDate];
NSTimeInterval remainingTime = totalCountdownInterval - elapsedTime;
if (remainingTime <= 0.0) {
[_timer invalidate];
}
/* update the interface by converting remainingTime (which is in seconds)
to seconds, minutes, hours */
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7586 次 |
| 最近记录: |