解决方案 »

  1.   

    可以通过两个时间点比较来实现,一个时间点是“目标时间”, 另一个就是“当前时间”
    所谓的“目标时间”就是点击开始时的时间+你要倒计时的时间。如果你想当你离开后并再次打开时,倒计时还会继续的话,你就需要记住这个”目标时间“。用这个目标时间与当前时间比较时间差
    使用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]];//倒计时显示
    }