[翻译] MZTimerLabel 用作秒表或者倒计时
MZTimerLabel 用作秒表或者倒计时

https://github.com/mineschan/MZTimerLabel
A handy class for iOS to use UILabel as a countdown timer or stopwatch just like in Apple Clock App.
一个基于UILabel好用的倒计时或者秒表的类。

Purpose(目的)
MZTimerLabel is a UILabel subclass, which is a handy way to use UILabel as a countdown timer or stopwatch just like that in Apple Clock App with just 2 lines of code. MZTimerLabel also provides delegate method for you to define the action when the timer finished.
MZTimerLabel是一个UILabel的子类,两行代码就可以显示秒表效果。它提供代理来帮助你处理倒计时结束后的事件处理。
Auther: MineS Chan
Remark: This is my first iOS plugin project on github, please accept my apologize if any bad coding.
Requirements(要求)
- ARC
- iOS 5.0+
Installations(安装)
Manual
- Download or clone MZTimerLabel, add
MZTimerLabel.handMZTimerLabel.msouce files into your project.将文件夹MZTimerLabel拖入你的工程当中 #import "MZTimerLabel.h"whereever you need it.引入头文件
CocoaPods
(Unformilar with CocoaPods yet? It's a dependency management tool for iOS and Mac, check it out!)
- Add
pod 'MZTimerLabel', '~> 0.4.1'to your podfiles
Easy Example(简单示例)
To use MZTimerLabel as a stopwatch and counter, you need only 2 lines.
使用MZTimerLabel作为秒表或者定时器,你只需两行代码。
MZTimerLabel *stopwatch = [[MZTimerLabel alloc] initWithLabel:aUILabel];
[stopwatch start];
Easy? If you are looking for a timer, things is just similar.
so easy.如果你想使用一个定时器,一样的。
MZTimerLabel *timer = [[MZTimerLabel alloc] initWithLabel:aUILabel andTimerType:MZTimerLabelTypeTimer];
[timer setCountDownTime:60];
[timer start];
Now the timer will start counting from 60 to 0 ;)
现在,时间就会从60到0了。
Custom Appearance(自定义外观)
As MZTimerLabel is a UILabel subclass, you can directly allocate it as a normal UILabel and customizetimeLabel property just like usual.
由于MZTimerLabel是UILabel的子类,你可以直接alloc出来作为一个UILabel然后定制timeLabel属性即可。
MZTimerLabel *redStopwatch = [[MZTimerLabel alloc] init];
redStopwatch.frame = CGRectMake(100,50,100,20);
redStopwatch.timeLabel.font = [UIFont systemFontOfSize:20.0f];
redStopwatch.timeLabel.textColor = [UIColor redColor];
[self.view addSubview:redStopwatch];
[redStopwatch start];
MZTimerLabel uses 00:00:00 (HH:mm:ss) as time format, if you prefer using another format such as including milliseconds.Your can set your time format like below.
MZTimerLabel使用 00:00:00 作为时间格式,如果你想使用毫秒显示。你可以设置成下面的方式。
timerExample4.timeFormat = @"HH:mm:ss SS";
Control the timer(控制定时器)
You can start,pause,reset your timer with your custom control, set your control up and call these methods:
你可以开始,暂停,重设你的定时器:
-(void)start;
-(void)pause;
-(void)reset;
And you control the time at the begining or during runtime with these methods
在定时器开始时或者是启动后修改:
-(void)setCountDownTime:(NSTimeInterval)time;
-(void)setStopWatchTime:(NSTimeInterval)time;
-(void)setCountDownToDate:(NSDate*)date;
-(void)addTimeCountedByTime:(NSTimeInterval)timeToAdd;
Timer Finish Handling(倒计时结束后的控制)
Usually when you need a timer, you need to deal with it after it finished counting. Following are 2 examples showing how to do it using delegate and block methods.
通常你要定时器,是为了结束后能处理一下时间。下面有两个例子来,一个用代理实现,一个用block来实现。
Delegate
First, set the delegate of the timer label.
首先设置代理
timer.delegate = self;
And then implement MZTimerLabelDelegate protocol in your dedicated class
然后实现 MZTimerLabelDelegate 协议
@interface ViewController : UIViewController<MZTimerLabelDelegate>
Finally, implement the delegate method timerLabel:finshedCountDownTimerWithTimeWithTime:
最后,实现代理方法 timerLabel:finshedCountDownTimerWithTimeWithTime:
-(void)timerLabel:(MZTimerLabel*)timerLabel finshedCountDownTimerWithTime:(NSTimeInterval)countTime{
//time is up, what should I do master?
}
Blocks
Block is a very convenient way to handle the callbacks, MZTimerLabel makes your life even easier.
使用block非常便利,MZTimerLabel让你无比轻松。
MZTimerLabel *timer = [[MZTimerLabel alloc] initWithLabel:aUILabel andTimerType:MZTimerLabelTypeTimer];
[timer3 setCountDownTime:60];
[timer startWithEndingBlock:^(NSTimeInterval countTime) {
//oh my god it's awesome!!
}];
[翻译] MZTimerLabel 用作秒表或者倒计时的更多相关文章
- iOS 10 跳转系统设置
苦心人天不负, 为了项目终于把 iOS 10 跳转系统设置的方法给搞定了, 很欣慰. http://www.cnblogs.com/lurenq/p/6189580.html iOS 10 跳转系统设 ...
- C语言运算符与表达式
1 概论 计算机内存中的数据可以通过变量,常量来表示和存储,那么这些数据如何运算? C语言中提供了大量(34种)的运算符可以用来完成数据的算术,赋值,逻辑,关系,条件判断以及自增自减运算和基于二进制的 ...
- Guideline 2.5.1 - Performance - Software Requirements
Guideline - Performance - Software Requirements Your app uses the "prefs:root=" non-public ...
- Mac下截图工具
苹果系统自带截图功能 1.截取全屏:快捷键(Shift+Command+3) ▲直接按“Shift+Command+3“快捷键组合,即可截取电脑全屏,图片自动保存在桌面. 2.截图窗口:快捷键(Shi ...
- NetEQ主要文件简介
accelerate.h,accelerate.cc 加速操作,对语音信号处理以实现快速播放. Accelerate类继承自父类TimeStretch,大多数功能由TimeStretch实现. Ret ...
- mac默认截图、截图代码
苹果系统自带截图功能 1 截取全屏:快捷键(Shift+Command+3) 直接按“Shift+Command+3“快捷键组合,即可截取电脑全屏,图片自动保存在桌面. 2 截图窗口:快捷键(Sh ...
- 带你看看Java的锁(三)-CountDownLatch和CyclicBarrier
带你看看Java中的锁CountDownLatch和CyclicBarrier 前言 基本介绍 使用和区别 核心源码分析 总结 前言 Java JUC包中的文章已经写了好几篇了,首先我花了5篇文章从源 ...
- C面向对象: 升级版本实现:同步逻辑、少量连续失败则增补、多次连续失败则拉长同步周期
// C语言之 面向对象+虚事务的抽象 /*********** 进阶练习: (对虚的事物的抽象) 完善部门职责 ***********************/ #include <stdio ...
- .NET 5的System.Text.Json的JsonDocument类讲解
本文内容来自我写的开源电子书<WoW C#>,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (gith ...
随机推荐
- Linux学习笔记——基于鸟哥的Linux私房菜
Linux学习笔记--基于鸟哥的Linux私房菜 ***** ARM与嵌入式linux的入门建议 (1) 学习基本的裸机编程:ARM7或ARM9,理解硬件架构和控制原理 (这一步是绝对的根基) (2) ...
- ASP.NET:使用Flurl制作可复用的分页组件
使用ASP.NET MVC查询时,一直使用MvcPaging组件,虽然需要自定义MvcPaging.Pager才能达到我想要的效果,但在没有较好的URL库时,还是这么用.分页的逻辑本来就不复杂,更重要 ...
- MongoDB入门教程三[数据类型]
MongoDB的文档使用BSON(Binary JSON)来组织数据,BSON类似于JSON,JSON只是一种简单的表示数据的方式,只包含了6种数据类型(null.布尔.数字.字符串.数组及对象),不 ...
- 码云Android项目构建注意事项(转载)
1.ant项目 build.xml必须位于项目根目录. 2.maven项目 pom.xml必须位于项目根目录. 3.gradle项目 由于gradle的配置灵活,我们做了一些规范,并且增加了一下机制来 ...
- CODEVS 4655 序列终结者-splay(区间更新、区间翻转、区间最值)
4655 序列终结者 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 题目描述 Description 网上有许多题,就是给定一个序列,要 ...
- WebSphere部署Spring Boot
WebSphere Application Server Network Deployment部署 Websphere版本: 8.5.5.12. 这里只简单做操作步骤介绍, 详细的信息请查看IBM的帮 ...
- jdk1.8下字符串常量的判断,String.intern()分析
字符串常量池在jdk升级过程中发生了一些变化 在JDK1.6中,它在方法区中,属于“永久代”. 在JDK1.7中,它被移除方法区,放在java堆中. 在JDK1.8中,取消了“永久代”,将常量池放在元 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 1.部署master组件 ...
- 使开发更便捷——Visual Studio 使用技巧——快捷键
下面是.Net开发中常用的快捷键,熟练使用可以提高开发效率: Ctrl + K + C //注释代码 Ctrl + K + U //取消代码注释 Ctrl + k + d //快速格式化代码 Shif ...
- splice() 的用法
splice splice()方法是修改Array的“万能方法”,它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素: var arr = ['Microsoft', 'Apple', ' ...