解决方案:40分
可以通过两个时间点比较来实现,一个时间点是“目标时间”, 另一个就是“当前时间”
所谓的“目标时间”就是点击开始时的时间+你要倒计时的时间。假如你想当你离开后并再次打开时,倒计时还会继续的话,你就需要记住这个”目标时间“。用这个目标时间与当前时间比较时间差
使用NSTimer 定时执行时间差计算。伪代码
所谓的“目标时间”就是点击开始时的时间+你要倒计时的时间。假如你想当你离开后并再次打开时,倒计时还会继续的话,你就需要记住这个”目标时间“。用这个目标时间与当前时间比较时间差
使用NSTimer 定时执行时间差计算。伪代码
//////每隔一秒执行一次
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFire:) userInfo:nil repeats:YES];
- (void)timerFire:(NSTimer *)timer
{
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setYear:2014];
[components setMonth:12];
[components setDay:12];
[components setHour:12];
[components setMinute:0];
[components setSecond:0];
NSDate *fireDate = [calendar dateFromComponents:components];//目标时间
NSDate *today = [NSDate date];//当前时间
unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *d = [calendar components:unitFlags fromDate:today toDate:fireDate options:0];//计算时间差
auctionTime.text = [NSString stringWithFormat:@"%d天%d小时%d%分%d秒", [d day], [d hour], [d minute], [d second]];//倒计时显示
}