iOS实现手机获取验证码倒计时效果

手机获取验证码的倒计时效果,实现很简单,附倒计时效果完整代码

之前做项目使用的是NSTimer做的倒计时效果,效果不太好。今天学习了下用GCD做,效果还是不错的。

关键代码如下:(完整代码)

//创建一个全局并非队列
  dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
   //创建一个定时器
    _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, ^{
    timeout --;
     if (timeout <= 0) {
       //定时器结束,关闭
        dispatch_source_cancel(_timer);
       _timer = nil;
       //回到主线程刷新UI
       dispatch_async(dispatch_get_main_queue(), ^{
       [_btn setTitle:@"获取验证码" forState:UIControlStateNormal];
       });
     }
    else
 {
  //回到主线程刷新UI
   dispatch_async(dispatch_get_main_queue(), ^{
     [_btn setTitle:[NSString stringWithFormat:@"%ds后重新获取",timeout] forState:UIControlStateNormal];
     });
     }
    });
  //启动定时器
dispatch_resume(_timer);

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

时间: 2017-07-22

iOS 实现类似QQ分组样式的两种方式

思路 思路很简单,对模型数据操作或则控制界面显示 先看下json部分数据 "chapterDtoList": [{ "token": null, "id": 1295, "chapterName": "第一章", "parentId": 0, "chapterLevel": 0, "attachmentUrl": "", &qu

iOS tableView实现单选和多选的实例代码

今天在项目中遇到了tableView的单选需求,现在总结一下,用一个简单的demo实现了简单的单选和多选两个功能.先看下效果图: 1:首先实现下单选 1:使用一个变量记录选中的行 @property (assign, nonatomic) NSIndexPath *selIndex; //单选选中的行 2:设置tableView数据,共2组,每组10行, - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { ret

iOS模仿微信长按识别二维码的多种方式

参考:https://github.com/nglszs/BCQRcode 方式一: #import <UIKit/UIKit.h> @interface ViewController : UIViewController @end ************** #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDid

iOS之Cocoapods安装教程(全面解析)

网上关于cocoapods的教程很多,关于它的优点我不赘述:但是我根据多次安装的经验,把我遇到的问题写一下,希望对新手有所帮助: 1. 设置输入源(由于默认的gem资源是国外的,由于历史原因,访问比较慢,所以需要改为国内的) 删除原来的: $ sudo gem sources --remove https://rubygems.org/ 添加新的 $ sudo gem sources -a https://ruby.taobao.org/ 出现如下提示,即为设置成功 $ sudo gem sou

iOS粒子路径移动效果 iOS实现QQ拖动效果

粒子效果,QQ拖动效果,实现很简单,具体代码如下 一.图示 二.分析 我们要实现的如果如上面的图示,那么我们可以按照下面的步骤操作: 第一步:我们的红点其实是一个UIButton.创建一个BageValueView继承自UIButton 第二步:初始化的时候,初始化控件,设置圆角,修改背景.文字颜色 第三步:添加手势.在手势的处理中我们,我们需要让当前控件随着手指移动而移动. 第四步:控件一开始创建的时候,其实有两个圆,一个就是我们能够拖动的大圆,另外一个就是原始位置上会改变大小的圆.这一步骤中

IOS 禁止缩放页面的实现方法

IOS 禁止缩放页面的实现方法 在ios10前我们能通过设置meta来禁止用户缩放页面: <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" /> 在ios10系统中meta设置失效了: 为了提高Safari中网站的辅助功能,即使网站在视口中设置了user-scalable = no,用户也可以

iOS如何实现强制转屏、强制横屏和强制竖屏的实例代码

本文介绍了iOS如何实现强制转屏.强制横屏和强制竖屏的实例代码,分享给大家 今天项目中遇到正在看视频的时候账号被挤,如果当时是横屏的情况下,需要强制竖屏.真头疼,网上找了好多方法,终于解决啦.O(∩_∩)O~ 强制横屏: [self interfaceOrientation:UIInterfaceOrientationLandscapeRight]; 强制竖屏: [self interfaceOrientation:UIInterfaceOrientationPortrait]; 强制转屏 -

Android开发强制横屏和强制竖屏设置实例代码

强制竖屏设置 1.代码在Activity的onResume方法中添加如下代码 @Override protected void onResume() { /** * 设置为横屏 */ if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } super.onRes

iOS中将个别页面强制横屏其他页面竖屏

在AppDelegate.h里面添加@property(nonatomic,assign)NSInteger allowRotation; 在AppDelegate.m文件里面添加 - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { if (_allowRotation == 1) { return UIInterfa

iOS屏幕旋转与锁屏的示例代码

在做视频开发时遇到屏幕旋转问题,其中涉及到 StatusBar. UINavigationController.UITabBarController .UIViewcontroller . 在设备锁屏下的整体效果图 iOS-旋转.gif 主要涉及以下4点: 横竖屏的旋转 屏幕旋转相应改变视图位置 旋转时状态栏的隐藏与显示 锁屏 1.横竖屏旋转 第1步: -(UIInterfaceOrientationMask)application:(UIApplication *)application su

使用JavaScript判断手机浏览器是横屏还是竖屏问题

//判断手机横竖屏状态: function hengshuping(){ if(window.orientation==180||window.orientation==0){ alert("竖屏状态!") } if(window.orientation==90||window.orientation==-90){ alert("横屏状态!") } } window.addEventListener("onorientationchange" i

基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码

其实主要是通过window.orientation实现,下面看下代码吧 复制代码 代码如下: function orient() {if (window.orientation == 90 || window.orientation == -90) {//ipad.iphone竖屏:Andriod横屏$("body").attr("class", "landscape");orientation = 'landscape';return fals

Android屏幕旋转之横屏竖屏切换的实现

刚实现了App内手机横/竖放置时,屏幕横/竖屏的切换.记录一下中间需要的关键信息和实现过程. 开门见山的说,实现屏幕自动/手动旋转的方式有两种: 一种是在工程的代码中定义,这种方式在横竖屏切换时执行的操作是:销毁当前Activity–根据新的屏幕尺寸重建Activity.如果不进行数据存储的操作,在切换的过程中Activity中的数据会丢失. 另一种是在工程的AndroidManifest.xml中定义,这种定义的方式在某些情况下可以实现"不销毁需要横竖屏的Activity",因为这种

ios启动页强制竖屏(进入App后允许横屏与竖屏)

这篇文章主要介绍了在ios启动页强制竖屏,进入App后允许横屏与竖屏的相关资料,需要的朋友可以参考下. 方法如下 1.修改App-info.plist(在XCode中General中设置 一样的效果) <key>UISupportedInterfaceOrientations</key> <array> <string>UIInterfaceOrientationPortrait</string> </array> 2.AppDele

ASP强制刷新网页和判断文件地址实例代码

强制刷新网页 <% '强制性刷新随机验证码 '让随机验证码每次按IE的后退按钮时,返回登录页面的随即码都自动刷新, Response.expires=-1 Response.AddHeader"pragma","no-cache" Response.AddHeader"cache-control","no-store" %> 判断文件地址是否有效 <% Response.Write("")

Android模拟强制下线通知功能实例代码

package com.itheima74.broadcastbestpractice; import android.content.Intent; import android.os.Bundle; import android.os.SystemClock; import android.support.v4.content.LocalBroadcastManager; import android.view.View; /** * 模拟强制下线通知 * 1.登录成功后10秒发送一条本地自