• 点击 获取验证码 后,btn上显示 60秒 倒计时


    -(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]];
    }

  • 相关阅读:
    Elasticsearch学习之基本核心概念
    Kudu,支持快速分析的新型Hadoop存储系统
    npm命令
    git相关命令
    Linux下Nodejs安装(完整详细)转
    数据库删除discuz 部分数据操作
    用tcping检查网站开放的端口
    Mybatis各种模糊查询
    抱歉,当前存在网络问题或服务器繁忙错误代码:20003问题解决方法
    win7下python2.7安装 pip,setuptools的正确方法
  • 原文地址:https://www.cnblogs.com/Lucky-056150/p/5364433.html
Copyright © 2020-2023  润新知