解决方案: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]];//倒计时显示 }