• 点击 获取验证码 后,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]];
    }

  • 相关阅读:
    centos7下mysql双主+keepalived
    Nginx 性能优化有这篇就够了!
    mysql对自增主键ID进行重新排序
    nginx 配置文件 2019-12-20
    zabbix服务端接收的数据类型,便于编写脚本向服务端提交数据
    zabbix自动注册,实现自动添加机器,减少人工干预
    zabbix企业微信告警配置教程
    websocket 连接测试端口服务是否正常代码
    mongodb Sort排序能够支持的最大内存限制为32M Plan executor error during find: FAILURE
    rabbitmq 的安装配置使用
  • 原文地址:https://www.cnblogs.com/Lucky-056150/p/5364433.html
Copyright © 2020-2023  润新知