NSTimer+倒计时功能实现
NSTimer
一、前言,查看官方文档,可以发现NSTimer是Foundation框架下的一个类,它直接继承与NSObject.
二、常用属性
1、
@property (copy) NSDate *fireDate;
计时器点燃的时间。返回点燃计时器的最新时间。
2、
@property (readonly) NSTimeInterval timeInterval;
用来得到计时器的时间间隔。只读。
3、
@property NSTimeInterval tolerance NS_AVAILABLE(10_9, 7_0);
公差。暂时不解释。
三、常用方法
1
、+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;
该方法创建和返回一个新的NSTimer,它被制定的调用object初始化。如果没有设置repeats为YES,那么你必须把实例化的timer用addTimer:forMode:方法添加到循环中。随着时间的流逝,timer开始触发,调用调用方法。
ti:定时器触发之间的秒数。
invocation:当计时器点燃时的调用。
yesOrNo:当是YES时,计时器将会重复直到它无效;如果NO,计时器将会无效当它点燃后。
2、
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;
该方法和上面的参数一致,也是创建和返回一个新的NSTimer.
3、
+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
该方法中的参数:
userInfo:自定义的用户信息针对timer,计时器保持一个强引用对这个info,直到计时器无效,该参数可以为空。
4、
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
5、
- (instancetype)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)ti target:(id)t selector:(SEL)s userInfo:(id)ui repeats:(BOOL)rep NS_DESIGNATED_INITIALIZER;
该方法中的参数:
date:计时器开始点燃时的时间。
6、
- (void)fire;
该方法使接收的消息被发送到它的目标。可以用这个方法去点燃循环的计时器在不打扰他常规点燃的时刻表。如果计时器不是循环的,它会自动失效。即使它的点燃时刻还没有到来。
7、
- (void)invalidate;
停止接收者再次点燃,从循环中去除。它是唯一的方法从循环中移除计时器。
倒计时功能实现:
一、直接上代码
.h文件:
//
// ViewController.h
// NSTimerRealiseJishi
//
// Created by zhanggui on 15/5/20.
// Copyright (c) 2015年 zhanggui. All rights reserved.
// #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UILabel *timeLabel;
- (IBAction)btnAction:(UIButton *)sender;
@end
.m文件
// ViewController.m
// NSTimerRealiseJishi
//
// Created by zhanggui on 15/5/20.
// Copyright (c) 2015年 zhanggui. All rights reserved.
// #import "ViewController.h" @interface ViewController ()
{
NSTimer *timer;
NSInteger totalSeconds;
}
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
totalSeconds = ; } - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)changeLabelStr
{
_timeLabel.text =[NSString stringWithFormat:@"%ld",(long)totalSeconds--];
if (totalSeconds==) {
[timer invalidate];
}
}
- (IBAction)btnAction:(UIButton *)sender {
if (!timer) {
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(changeLabelStr) userInfo:nil repeats:YES];
[timer fire];
} }
@end
主要思想就是:新建一个计时器,然后设置时间间隔和倒计时总时间,然后每次让_timeLabel.text改变就可以了。
NSTimer+倒计时功能实现的更多相关文章
- iOS “获取验证码”按钮的倒计时功能
iOS 的倒计时有多种实现细节,Cocoa Touch 为我们提供了 NSTimer 类和 GCD 的dispatch_source_set_timer方法去更加方便的使用计时器.我们也可以很容易的的 ...
- html5 canvas 实现倒计时 功能
function showTime(a) { var b = { id: "showtime", //canvasid x: 60, //中心点坐标 X轴; y: 60, //中心 ...
- 模块:js实现一个倒计时功能
1.给显示内容加样式 <style> #p1{font-size: large; color: red;} </style> 2.客户端页面 <div id=" ...
- Android 关于倒计时功能的实现
关于倒计时的实现,可以说有很多的方法,比较常见的就是Timer+TimerTask+Handler了,或者还可以配合Runnable.例如下面的代码: import java.util.Timer; ...
- iOS 按钮倒计时功能
iOS 按钮倒计时功能, 建议把按钮换成label,这样会避免读秒时闪烁 __block ; __block UIButton *verifybutton = _GetverificationBtn; ...
- js实现是倒计时功能
工作中经常用到倒计时的功能,最近在整理之前做的项目的时候,发现自己写过一个倒计时的功能的效果,这里和大家分享下!实现这个功能是用原生js写的,不需要加载额外的库文件!功能比较简单,但是可以在此基础上扩 ...
- App启动页倒计时功能
转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6753418.html 示例代码采用 RxJava + RxLifecycle + Data-Binding ...
- JS实现为控件添加倒计时功能
一.概述 在有些报表需求中,需要为控件添加倒计时功能,限制到某一个时间点后能进行一项操作或不能进行某项操作,比如查询,导出功能等等,又需要人性化地显示还有多少时间,即倒计时功能,比如下图中我们限制这个 ...
- 原生js实现一个简单的倒计时功能
大家好,我是云中君!欢迎大家来观看我的博客 之前那,在群里看到很多人问,关于电商网站中的倒计时功能怎么实现,很多人说在网上找了很多插件,但是不是很会用,所以今天就在这里分享一下我封装的一个小的倒计时功 ...
随机推荐
- 从零开始学 Web 之 HTML(三)表单
大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...
- Makefile.am文件配置
Makefile.am Makefile.am是一种比Makefile更高层次的编译规则,可以和configure.in文件一起通过调用automake命令,生成Makefile.in文件,再调用./ ...
- 进程间通信IPC-信号量
semget semget函数创建一个新的信号量或是获得一个已存在的信号量键值. int semget(key_t key, int num_sems, int sem_flags); 第一个参数k ...
- elk + filebeat,6.3.2版本简单搭建,实现我们自己的集中式日志系统
前言 刚从事开发那段时间不习惯输出日志,认为那是无用功,徒增代码量,总认为自己的代码无懈可击:老大的叮嘱.强调也都视为耳旁风,最终导致的结果是我加班排查问题,花的时间还挺长的,要复现问题.排查问题等, ...
- CMMI三个过程域的流程及达到特定目标、共性目标的要求(RD需求管理过程,PI产品集成过程,TS技术解决方案)
RD需求管理过程 通过面谈的方式获取相关干系人关于产品生命周期各阶段的需求.期望,限制条件,接口 将相关干系人的需求.期望,限制条件,接口转化成用户需求说明书 依据客户需求,确定产品或产品组件需求,形 ...
- JavaWeb学习 (二十五)————监听器(Listener)
一.监听器介绍 1.1.监听器的概念
- NAT与网桥
CentOS设置虚拟网卡做NAT方式和Bridge方式桥接 时间:2015-02-25 23:30来源:blog.51cto.com 作者:samlei 摘要:KVM虚拟机网络配置的两种方式:N ...
- Bootstrap学习记录-3.Badge、Breadcrumb、Buttons、 Button Group、Card、Carousel
1. Badge Badge作为数值标记组件,它能作为链接或按钮的一部分来提供计数作用,而且它通过使用相对字体大小来适应父级元素的大小.它的最基本的修饰符为.badge .badge-*. <b ...
- 如何靠谱地查到Tomcat的版本
Tomcat版本获取 一般找jdk的版本的时候,我们直接执行如下命令就可以得知了 java -version 但是Tomcat的版本呢? 除了Tomcat安装目录路径里包含的版本号,还有其他靠谱的获取 ...
- SpringCloud初体验之Eureka
Eureka简介 SpringBoot简化了Spring工程的复杂度,之前复杂的Spring工程被拆分成了一个个小的SpringBoot工程.那么SpringBoot之间如何通讯,相互获取信息呢?这就 ...