[翻译] 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

  1. Download or clone MZTimerLabel, add MZTimerLabel.h and MZTimerLabel.m souce files into your project.将文件夹MZTimerLabel拖入你的工程当中
  2. #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!)

  1. 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!!
    }];
目录
相关文章
|
2月前
|
芯片
【TI速成】半小时入门MSPM0G3507简明教程之按键定时器(二)
半小时入门MSPM0G3507简明教程之按键定时器
|
4月前
|
C语言
【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
|
6月前
|
小程序
小程序一键全局一秒变黑白(效果预览)
小程序一键全局一秒变黑白(效果预览)
50 0
|
6月前
|
XML C# 数据格式
[UWP]为番茄钟应用设计一个平平无奇的状态按钮
[UWP]为番茄钟应用设计一个平平无奇的状态按钮
|
前端开发 JavaScript
2023跨年代码(烟花+自定义文字+背景音乐+雪花+倒计时)
2023跨年代码(烟花+自定义文字+背景音乐+雪花+倒计时)
1794 7
2023跨年代码(烟花+自定义文字+背景音乐+雪花+倒计时)
|
移动开发 前端开发
【H5 音乐播放实例】第五节 音轨制作
【H5 音乐播放实例】第五节 音轨制作
128 0
|
芯片
数电实验 数字电子钟设计 基于quartus 实现计时校时闹钟秒表稍复杂音频 分享电路图设计以及工程文件
数电实验 数字电子钟设计 基于quartus 实现计时校时闹钟秒表稍复杂音频 分享电路图设计以及工程文件
1533 1
数电实验 数字电子钟设计 基于quartus 实现计时校时闹钟秒表稍复杂音频 分享电路图设计以及工程文件
|
JavaScript 前端开发 UED
【组件封装】显示实时时间和星期几·附文字特效
【组件封装】显示实时时间和星期几·附文字特效
【组件封装】显示实时时间和星期几·附文字特效
“你那么强,能不能用Unity做时钟”,“嗨,这有啥难”
又见面了哈,今天为大家介绍时钟、钟表的实现方法教程。 实现的方法有很多,这里只是提供了一个思路,本着抛砖引玉的心态,希望能和大家共同学习。