iOS之实现倒计时功能
来源:互联网 发布:JSforeach遍历二维数组 编辑:程序博客网 时间:2024/05/20 17:08
倒计时在发送验证码是常见的功能,怎么实现这个功能。正所谓会者不难,难者不会。在此遍博客来实现一下。具体代码可以参考 倒计时Demo
一、实现思路
倒计时功能的实现:
当触发倒计时的button时,才进行倒计时功能
倒计时完毕时,使button可用即可以再次点击来重新发送
二、具体代码的实现
EDCountdown.h
//// EDCountdown.h// Countdown//// Created by humor on 15/12/31.// Copyright © 2015年 onefiter. All rights reserved.//#import <Foundation/Foundation.h>@class EDCountdown;@protocol EDCountdownDelegate <NSObject>/** * 周期性的通知外界,自创建计时器到当前时间差值 * * @param sender 计时器 * @param timeOffset 自创建计时器到当前时间差值 */- (void)notifyCountTimeCallBack:(id)sender withTimeOffset:(NSTimeInterval)timeOffset;@end@interface EDCountdown : NSObject@property(nonatomic, weak ) id<EDCountdownDelegate> delegate;@property(nonatomic, assign) BOOL isOpen;@property(nonatomic, assign) NSTimeInterval timeInterval;- (void)handleCountTimerEvent:(id)sender;@end
EDCountdown.m
//// EDCountdown.m// Countdown//// Created by humor on 15/12/31.// Copyright © 2015年 onefiter. All rights reserved.//#import "EDCountdown.h"@interface EDCountdown ()@property (nonatomic, strong) NSTimer *timer;@property (nonatomic, assign) NSTimeInterval startTime;@end@implementation EDCountdown- (instancetype)init{ if (self = [super init]) { _timeInterval = 1; } return self;}- (void)dealloc{ self.isOpen = NO;}- (void)setIsOpen:(BOOL)isOpen{ _isOpen = isOpen; __block dispatch_block_t mainBlock = NULL; if (_isOpen) { mainBlock = ^{ if (_timer.isValid) { [_timer invalidate]; } _timer = [NSTimer scheduledTimerWithTimeInterval:_timeInterval target:self selector:@selector(handleCountTimerEvent:) userInfo:nil repeats:YES]; _startTime = CFAbsoluteTimeGetCurrent(); }; } else { mainBlock = ^{ if (_timer.isValid) { [_timer invalidate]; } _timer = nil; }; } if ([NSThread isMainThread]) { mainBlock(); } else { dispatch_async(dispatch_get_main_queue(), mainBlock); }}- (void)handleCountTimerEvent:(id)sender{ if ([_delegate respondsToSelector:@selector(notifyCountTimeCallBack:withTimeOffset:)]) { NSTimeInterval deltaTime = CFAbsoluteTimeGetCurrent() - _startTime; [_delegate notifyCountTimeCallBack:self withTimeOffset:deltaTime]; }}@end
0 0
- iOS之实现倒计时功能
- iOS实现倒计时功能
- iOS实现倒计时功能
- ios开发实现倒计时功能
- ios开发之倒计时实现
- iOS - 实现验证码倒计时功能
- iOS倒计时实现之两种方法
- ios开发之倒计时实现的方法
- ios开发之GCD倒计时实现
- iOS发送验证码倒计时功能的实现
- 实现倒计时功能
- JavaScript实现倒计时功能
- ASP实现倒计时功能
- 倒计时功能的实现
- js实现倒计时功能
- js实现倒计时功能
- Lua 实现倒计时功能
- js实现倒计时功能
- 近期学习感悟
- 类集框架笔记2
- (二)黑马程序员——面向对象
- 罗永浩 2015跨年演讲《时间的朋友》
- NYOJ88汉诺塔(一)(快速幂&同余定理)
- iOS之实现倒计时功能
- 程序包管理yum&&编译篇
- iOS多线程开发其实很简单
- 孢子框架-互联网金融平台微服务架构设计
- 09Java语法回顾map集合
- 机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程)
- 惯性导航之Runge-Kunta法更新四元数(六)
- spring validate group分类校验
- 2015总结