全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

iOS获取短信验证码倒计时的两种实现方法

方法一:

网上用的很多的一种,不多说,直接上代码.

-(void)startTime{
  __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(), ^{
        [self.getIdentifyCodeBt setTitle:@"获取验证码" forState:UIControlStateNormal];
        self.getIdentifyCodeBt.userInteractionEnabled = YES;
        [self.getIdentifyCodeBt setTitleColor:THEME_RED forState:UIControlStateNormal];
        self.getIdentifyCodeBt.backgroundColor = [UIColor whiteColor];
        self.getIdentifyCodeBt.layer.borderColor = THEME_RED.CGColor;
      });
    }else{
      dispatch_async(dispatch_get_main_queue(), ^{

        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:1];
        [self.getIdentifyCodeBt setTitle:[NSString stringWithFormat:@"%zd秒后失效",timeout] forState:UIControlStateNormal];
        [self.getIdentifyCodeBt setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
        self.getIdentifyCodeBt.backgroundColor = [UIColor lightGrayColor];
        self.getIdentifyCodeBt.layer.borderColor = [UIColor clearColor].CGColor;
        self.getIdentifyCodeBt.clipsToBounds = YES;
        [UIView commitAnimations];
        self.getIdentifyCodeBt.userInteractionEnabled = NO;
      });
      timeout--;
    }
  });
  dispatch_resume(_timer);

}

到时直接调用就可以了。

方法二:利用分类

给UIButton新建一个分类

.h文件如下

#import <UIKit/UIKit.h>

@interface UIButton (XSCountDown)
- (void)xs_beginCountDownWithDuration:(NSTimeInterval)duration;
- (void)xs_stopCountDown;
@end

.m文件如下

#import "UIButton+XSCountDown.h"

#import "ThemeColor.h"
static NSTimer *_countTimer;
static NSTimeInterval _count;
static NSString *_title;

@implementation UIButton (XSCountDown)

- (void)xs_beginCountDownWithDuration:(NSTimeInterval)duration {
  _title = self.titleLabel.text;
  _count = duration;
  _countTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(xs_updateTitle) userInfo:nil repeats:YES];
  [[NSRunLoop mainRunLoop] addTimer:_countTimer forMode:NSRunLoopCommonModes];
  self.userInteractionEnabled = NO;

   [self setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  self.backgroundColor = [UIColor lightGrayColor];
  self.layer.borderColor = [UIColor clearColor].CGColor;
  self.clipsToBounds = YES;
}

- (void)xs_stopCountDown {
  [_countTimer invalidate];
  _countTimer = nil;
  _count = 60.0;
  [self setTitle:_title forState:UIControlStateNormal];
  self.userInteractionEnabled = YES;
}

- (void)xs_updateTitle {
  NSString *countString = [NSString stringWithFormat:@"%lis 后失效", (long)_count - 1];
  self.userInteractionEnabled = NO;
  [self setTitle:countString forState:UIControlStateNormal];
  if (_count-- <= 1.0) {
    [self xs_stopCountDown];
    [self setTitleColor:THEME_RED forState:UIControlStateNormal];
    self.backgroundColor = [UIColor whiteColor];
    self.layer.borderColor = THEME_RED.CGColor;
  }

}

@end

然后在controller里直接调用分类.h文件里的方法就ok了

[self.verifyBt xs_beginCountDownWithDuration:60.0];

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ios  # 获取短信验证码  # 短信验证码倒计时  # 获取验证码倒计时  # IOS开发代码分享之用nstimer实现倒计时功能  # IOS实现验证码倒计时功能(一)  # IOS关于大型网站抢购、距活动结束  # 剩余时间倒计时的实现代码  # ios 实现倒计时的两种方式  # iOS中实现简单易懂秒杀倒计时/倒计时代码  # iOS中让多个cell上都出现倒计时的分析与实现  # iOS实现毫秒倒计时的方法详解  # iOS启动页倒计时跳过按钮功能  # Swift实现iOS应用中短信验证码倒计时功能的实例分享  # iOS实现秒杀活动倒计时  # 倒计时  # 直接调用  # 多说  # 验证码  # 大家多多  # 就可以  # 新建一个  # 网上  # forState  # beginAnimations  # setTitle  # UIControlStateNormal  # dispatch_async  # dispatch_source_cancel  # lt  # dispatch_source_set_event_handler  # getIdentifyCodeBt  # dispatch_get_main_queue  # whiteColor  # UIColor 


相关文章: 上海网站制作开发公司,上海买房比较好的网站有哪些?  如何高效利用亚马逊云主机搭建企业网站?  如何通过远程VPS快速搭建个人网站?  兔展官网 在线制作,怎样制作微信请帖?  建站VPS选购需注意哪些关键参数?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星云端配置指南:模板选择与SEO优化一键生成  制作电商网页,电商供应链怎么做?  如何快速搭建安全的FTP站点?  如何自定义建站之星网站的导航菜单样式?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  建站之星后台管理:高效配置与模板优化提升用户体验  开源网站制作软件,开源网站什么意思?  平台云上自助建站如何快速打造专业网站?  如何选择域名并搭建高效网站?  如何快速建站并高效导出源代码?  如何快速打造个性化非模板自助建站?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何登录建站主机?访问步骤全解析  如何通过cPanel快速搭建网站?  代购小票制作网站有哪些,购物小票的简要说明?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  实例解析angularjs的filter过滤器  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  建站主机如何选?性能与价格怎样平衡?  网站制作需要会哪些技术,建立一个网站要花费多少?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  如何快速生成高效建站系统源代码?  动图在线制作网站有哪些,滑动动图图集怎么做?  c# 在高并发下使用反射发射(Reflection.Emit)的性能  如何通过虚拟主机快速搭建个人网站?  公司网站制作价格怎么算,公司办个官网需要多少钱?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  如何通过WDCP绑定主域名及创建子域名站点?  青岛网站建设如何选择本地服务器?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  如何在西部数码注册域名并快速搭建网站?  如何在景安服务器上快速搭建个人网站?  建站为何优先选择香港服务器?  建站之星代理平台如何选择最佳方案?  Python多线程使用规范_线程安全解析【教程】  网站代码制作软件有哪些,如何生成自己网站的代码?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。