iOS --一个倒计时类

来源:互联网 发布:淘宝服饰店铺简介 编辑:程序博客网 时间:2024/06/05 08:46


把btn的风格变成自定义可以不让文字闪



.h




#import <Foundation/Foundation.h>


@interface countDownTool :NSObject


+(instancetype)shareInstance;


-(void) startCounrDown :(UIButton *)button;


@end

--------------------------------------------------------------------------------------------------


.m


#import "countDownTool.h"


@implementation countDownTool



+(instancetype)shareInstance

{

   static countDownTool *md =nil;

   static dispatch_once_t onceToken;

   dispatch_once(&onceToken, ^{

       if (md==nil)

        {

            md = [[countDownToolalloc]init];

        }

    });

   return md;

}


-(void) startCounrDown :(UIButton *)button{

    

   


   __block int timeout=120;//倒计时时间

    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(), ^{

                //设置界面的按钮显示根据自己需求设置

                [button setTitle:@"发送验证码"forState:UIControlStateNormal];

                //设置视图是否可以接收到用户的事件和消息

                button.userInteractionEnabled =YES;

            });

        }else{

            //            int minutes = timeout / 60;

           int seconds = timeout % 240;

           NSString *strTime = [NSStringstringWithFormat:@"%.2d", seconds];

            dispatch_async(dispatch_get_main_queue(), ^{

                //设置界面的按钮显示根据自己需求设置

               NSLog(@"____%@",strTime);

                [button setTitle:[NSStringstringWithFormat:@"%@",strTime]forState:UIControlStateNormal];

                button.userInteractionEnabled =NO;

                

            });

            timeout--;

            

        }

    });

    dispatch_resume(_timer);






}



@end



0 0
原创粉丝点击