iOS 倒计时

+ (void)verificationCode:(void(^)())blockYes blockNo:(void(^)(id time))blockNo

{

//设置倒计时时间

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

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

blockYes();

});

} else {

// int minutes = timeout / 60;

int seconds = timeout % 60;

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

dispatch_async(dispatch_get_main_queue(), ^{

//NSLog(@"验证码剩余时间%@",strTime);

blockNo(strTime);

});

timeout--;

}

});

dispatch_resume(_timer);

}

作者:叫我李五

链接:http://www.jianshu.com/p/02393ff08257

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天项目中遇到获取验证码之后有一个倒计时功能的实现,百度了一下,有两种实现方式的,再次总结一下,以便日后需要查看,...
    等不来的期待阅读 3,926评论 3 4
  • 用法: 用法相当简单,在合适位置调用下面方法即可,但是要先传入倒计时的开始时间戳。 详细代码: -(void)ti...
    全栈的猫南北阅读 12,321评论 2 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,643评论 19 139
  • Dispatch Sources 现代系统通常提供异步接口,允许应用向系统提交请求,然后在系统处理请求时应用可以继...
    YangPu阅读 2,755评论 0 0
  • 年过而立,同事话说“到了长肚子的年纪”。北漂在外,形单影只。 学生时代也去健身房:那时也便宜,属自娱自乐,瞎玩。 ...
    孤星伴明月阅读 3,680评论 1 6