-(void)daojishi{
    __weak typeof(self) weakSelf = self;
    __block int timeout=60; //倒计时时间
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
    dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
    dispatch_source_set_event_handler(_timer, ^{
        if(timeout<=0){ //倒计时结束,关闭
            dispatch_source_cancel(_timer);
            dispatch_async(dispatch_get_main_queue(), ^{
                //设置界面的按钮显示 根据自己需求设置
                [_btnChongxinhuoquyanzhengma setTitle:@”发送验证码” forState:UIControlStateNormal];
                _btnChongxinhuoquyanzhengma.userInteractionEnabled = YES;
            });
        }else{
            int seconds = timeout % 61;
            NSString *strTime = [NSString stringWithFormat:@”%.2d”, seconds];
            dispatch_async(dispatch_get_main_queue(), ^{
                //设置界面的按钮显示 根据自己需求设置
                ////NSLog(@”____%@”,strTime);
                [UIView beginAnimations:nil context:nil];
                [UIView setAnimationDuration:1];
                [_btnChongxinhuoquyanzhengma setTitle:[NSString stringWithFormat:@”%@秒”,strTime] forState:UIControlStateNormal];
                [UIView commitAnimations];
                _btnChongxinhuoquyanzhengma.userInteractionEnabled = NO;
            });
            timeout–;
        }
    });
    dispatch_resume(_timer);
}

//重新获取验证码按钮方法
– (IBAction)chongxinhuoquYanZhenMaBtnClick:(UIButton *)sender {
    NSLog(@”点击的重新获取按钮”);
    [self daojishi];
}

 

2  倒计时     显示  年月日 时分秒           

开始运行viewDidLoad的时候加载 [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];//使用timer定时,每秒触发一次,然后就是写selector了。
 
– (void)timerFireMethod:(NSTimer*)theTimer
{
 //NSDateFormatter *dateformatter = [[[NSDateFormatter alloc]init] autorelease];//定义NSDateFormatter用来显示格式
 //[dateformatter setDateFormat:@”yyyy MM dd hh mm ss”];//设定格式
 NSCalendar *cal = [NSCalendar currentCalendar];//定义一个NSCalendar对象
 NSDateComponents *shibo = [[NSDateComponents alloc] init];//初始化目标时间(好像是世博会的日期)
 [shibo setYear:2010];
 [shibo setMonth:5];
 [shibo setDay:1];使用NSTimer实现倒计时
 [shibo setHour:8];
 [shibo setMinute:0];
 [shibo setSecond:0];
 
 NSDate *todate = [cal dateFromComponents:shibo];//把目标时间装载入date
 [shibo release];
// NSString *ssss = [dateformatter stringFromDate:dd];
// NSLog([NSString stringWithFormat:@”shibo shi:%@”,ssss]);
 
 NSDate *today = [NSDate date];//得到当前时间
// NSString *sss = [dateformatter stringFromDate:today];
// NSLog([NSString stringWithFormat:@”xianzai shi:%@”,sss]);
 //用来得到具体的时差
 unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |
NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit |
NSSecondCalendarUnit;
 NSDateComponents *d = [cal components:unitFlags fromDate:today toDate:todate options:0];
 lab.text = [NSString stringWithFormat:@”%d年%d月%d日%d时%d分%d秒”,[d year],[d month], [d day], [d hour], [d minute], [d second]];
}

版权声明:本文为Lucky-056150原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Lucky-056150/p/5364433.html