超简单的秒表:包含:开始、暂停(不清零)、清零 方法

核心代码

//
// ViewController.m
// MiaoBiao
//
// Created by Ibokan on 15/8/18.
// Copyright (c) 2015年 Crazy凡. All rights reserved.
// #import "ViewController.h" @interface ViewController ()
{
int _alltime;
}
@property(nonatomic,strong)UIColor * EnabledColor;//定义全局可按按钮颜色
@property(nonatomic,strong)UILabel *label;//时间显示label
@property(nonatomic,strong)UIButton *buttonStart;//开始按钮
@property(nonatomic,strong)UIButton *buttonPause;//暂停按钮
@property(nonatomic,strong)UIButton *buttonClear;//清零
@property(nonatomic,strong)NSTimer *timer;//计时器
@property(nonatomic,strong)UILabel *labelinfo;//作者信息 @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_EnabledColor = [UIColor colorWithRed:/255.0 green:/255.0 blue:/255.0 alpha:]; //初始化全局颜色 //初始换显示label
self.label = [[UILabel alloc]initWithFrame:CGRectMake(, , , )];
self.label.backgroundColor = _EnabledColor;
self.label.text = @"00:00:00";
self.label.font = [UIFont fontWithName:@"Helvetica" size:];
self.label.textColor = [UIColor whiteColor];
self.label.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:self.label]; //初始化开始按钮
self.buttonStart = [[UIButton alloc]initWithFrame:CGRectMake(, , , )];
[self.buttonStart setTitle:@"Start" forState:UIControlStateNormal];
self.buttonStart.backgroundColor = _EnabledColor;
[self.buttonStart setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.view addSubview:self.buttonStart];
[self.buttonStart addTarget:self action:@selector(start) forControlEvents:UIControlEventTouchUpInside]; //初始化暂停按钮
self.buttonPause = [[UIButton alloc]initWithFrame:CGRectMake(, , , )];
[self.buttonPause setTitle:@"Pause" forState:UIControlStateNormal];
self.buttonPause.backgroundColor = _EnabledColor;
[self.buttonPause setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.view addSubview:self.buttonPause];
[self.buttonPause addTarget:self action:@selector(pause) forControlEvents:UIControlEventTouchUpInside]; //初始化清除按钮
self.buttonClear = [[UIButton alloc]initWithFrame:CGRectMake(, , , )];
[self.buttonClear setTitle:@"Clear" forState:UIControlStateNormal];
self.buttonClear.backgroundColor = _EnabledColor;
[self.buttonClear setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.view addSubview:self.buttonClear];
[self.buttonClear addTarget:self action:@selector(clear) forControlEvents:UIControlEventTouchUpInside]; //初始化信息显示label
self.labelinfo = [[UILabel alloc]initWithFrame:CGRectMake(, , , )];
self.labelinfo.backgroundColor = _EnabledColor;
self.labelinfo.text = @"Developed by Crazy凡";
self.labelinfo.textColor = [UIColor whiteColor];
self.labelinfo.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:self.labelinfo]; [self clear];//调用clear方法为组件初始化
} - (void)start
{ [self.buttonStart setTitle:@"Start" forState:UIControlStateNormal];//改变开始按钮显示字符(为暂停后初始化做准备)
[self startUnenabled];
[self pauseEnabled];
[self clearEnabled]; //timer 初始化 哪里需要哪里调用,
self.timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(add) userInfo:nil repeats:YES]; } - (void)pause
{
[self.buttonStart setTitle:@"Continue" forState:UIControlStateNormal];//改变开始按钮显示字符
[self.timer invalidate];
[self startEnabled];
[self pauseUnenabled];
} - (void)clear
{
_alltime = ;
// _millisecond = 0;
// _second = 0;
// _minute = 0;
[self.timer invalidate];
self.label.text = @"00:00:00";
[self.buttonStart setTitle:@"Start" forState:UIControlStateNormal];
[self startEnabled];
[self pauseUnenabled];
[self clearUnenabled];
}
- (void)add
{
_alltime++;
self.label.text = [[NSString alloc]initWithFormat:@"%02d:%02d:%02d",_alltime/,_alltime%/,_alltime%];
//self.label.text = [[[NSString alloc]initWithFormat:@"%02d:%02d:%02d",_alltime/6000,_alltime%6000/100,_alltime%100] stringByAppendingString:[[NSString alloc]initWithFormat:@"%@",[[NSDate alloc]init] ]]; } //以下是按钮可用性控制方法
- (void)startEnabled
{
self.buttonStart.enabled = true;
self.buttonStart.backgroundColor = _EnabledColor;
}
- (void)startUnenabled
{
self.buttonStart.enabled = false;
self.buttonStart.backgroundColor = [UIColor darkGrayColor]; }
- (void)pauseEnabled
{
self.buttonPause.enabled = true;
self.buttonPause.backgroundColor = _EnabledColor;
}
- (void)pauseUnenabled
{
self.buttonPause.enabled = false;
self.buttonPause.backgroundColor = [UIColor darkGrayColor];
}
- (void)clearEnabled
{
self.buttonClear.enabled = true;
self.buttonClear.backgroundColor = _EnabledColor;
}
- (void)clearUnenabled
{
self.buttonClear.enabled = false;
self.buttonClear.backgroundColor = [UIColor darkGrayColor];
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end

学习点

1、[UIColor colorWithRed:20/255.0 green:198/255.0 blue:233/255.0 alpha:1];

//OC 之自定义颜色

2、self.timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(add) userInfo:nil repeats:YES];

//NSTimer 使用方法

3、[self.buttonStart addTarget:self action:@selector(start) forControlEvents:UIControlEventTouchUpInside];

//回调方法

注意:以下为重新编辑部分:源码以及下面可以下载的源码中不包含此部分

4、  NSDateFormatter *formatter = [[NSDateFormatter alloc]init];

  [formatter setDateFormat:@"mm:ss:SS"]; //

  NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:_alltime];

  NSString *confromTimespStr = [formatter stringFromDate:confromTimesp];

  self.label.text = confromTimespStr;

//格式化时间输出

用以上代码替换源码中的:self.label.text = [[NSString alloc]initWithFormat:@"%02d:%02d:%02d",_alltime/6000,_alltime%6000/100,_alltime%100]; 一句

此处粗讲一下时间格式化:

把一行代码可以搞定的事情替换成一堆代码,上面的替换代码看似更麻烦了,这样做并非没有意;或许在此处显得找麻烦,但是当需要转换的时间值过大时,手动转换就会显得尤为尴尬,因为需要考虑各种因素(闰年、闰秒之类的);

系统提供的方法可以直接将数字转换成时间格式;

原理是:

  [NSDate dateWithTimeIntervalSince1970:_alltime]会把后面的_alltime这个数字表示的时间(s)转换成自1970年1月1日0时0分0秒0毫秒到现在的时间差(时间格式的),至于为什么是1970年的,这里不多讲;现在的计算机和一些电子设备的时间是以从当前到1970年1月1日0时0分0秒0毫秒的偏移量(ms)为标准的;这里使用dateWithTimeIntervalSince1970方法,就会把原来额double类型的数据转换成时间类型,格式由“[formatter setDateFormat:@"mm:ss:SS"]”决定;后面我会列出时间的格式化关键字;

编号

含义

备注

备注

1

d、dd

日(1、01)

2

EE、EEE

day(sun、sunday)

3

M、MM、MMM、MMMM

月(1、01、Jan、January)

4

gg

显示时代、纪元

5

h、hh

小时(1、01)

12小时制

6

H、HH

小时(1、01)

24小时制

7

m、mm

分钟(1、01)

8

s、ss

秒(1,01)

9

S、SS、SSS

毫秒(1位、2位、3位)

10

y、yy、yyy、yyyy

年份

这里是个粗略的,详细可以去看看http://www.cnblogs.com/Cristen/p/3599922.html  不过其中的ff 表示并没有测试出来。

此处编辑于:2015-08-20

点我下载源码

ioc开发学习 --简易计时器 (基于iPhone5屏幕尺寸开发)的更多相关文章

  1. Android开发学习之路--基于vitamio的视频播放器(二)

      终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了.在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的 ...

  2. JavaWeb学习 (二十一)————基于Servlet+JSP+JavaBean开发模式的用户登录注册

    一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...

  3. Android开发学习之路--MAC下Android Studio开发环境搭建

    自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...

  4. Android开发学习总结——搭建最新版本的Android开发环境

    原文出自:https://www.cnblogs.com/xdp-gacl/p/4322165.html#undefined 最近由于工作中要负责开发一款Android的App,之前都是做JavaWe ...

  5. 驱动开发学习笔记. 0.06 嵌入式linux视频开发之预备知识

    驱动开发读书笔记. 0.06  嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB v ...

  6. ios开发学习- 简易音乐播放器2 (基于iPhone4s屏幕尺寸)-- 歌词解析--plist文件应用--imageNamed图片加载耗内存

    声明:(部分图片来自网络,如果侵犯了您的权益请联系我,会尽快删除!) 又是音乐播放器,不过这次和上次不一样了,准确说这次更像播放器了,初学者不建议看这个,可以先看前面一个音乐播放器(1),当然 我没加 ...

  7. iso 开发学习--简易音乐播放器(基于iPhone4s屏幕尺寸)

    三个按钮  一个进度条 贴图(软件中部分图片,来自网络,如果侵犯了您的权益,请联系我,会立刻撤下) 核心代码 // // ViewController.m // 08-10-MusicPlayer / ...

  8. Java开发学习(十二)----基于注解开发依赖注入

    Spring为了使用注解简化开发,并没有提供构造函数注入.setter注入对应的注解,只提供了自动装配的注解实现. 1.环境准备 首先准备环境: 创建一个Maven项目 pom.xml添加Spring ...

  9. Android开发学习笔记--计时器的应用实例

    为了了解安卓计时器的用法,写了一个秒表的应用,正是这个秒表,让我对Android应用的速度大跌眼镜,我设置了一个计时器,10ms更新一次显示的时间,然后更标准的时间一比较发现,跑10s就有一秒的时间误 ...

随机推荐

  1. [RxJS] What RxJS operators are

    We have covered the basics of what is Observable.create, and other creation functions. Now lets fina ...

  2. RxJava使用场景小结

    一.Scheduler线程切换 这种场景经常会在“后台线程取数据,主线程展示”的模式中看见 Observable.just(1, 2, 3, 4) .subscribeOn(Schedulers.io ...

  3. 自定义控件(视图)2期笔记10:自定义视图之View事件分发机制("瀑布流"的案例)

    1. Touch事件的传递:   图解Touch事件的传递,如下: 当我们点击子View 02内部的Button控件时候,我们就触发了Touch事件. • 这个Touch事件首先传递给了顶级父View ...

  4. rabbitmq 消息持久化

    rabbitmq 消息持久化 2016-02-18 11:19 224人阅读 评论(0) 收藏 举报  分类: 综合(15)  版权声明:本文为博主原创文章,未经博主允许不得转载. 二: 任务分发 & ...

  5. 怎样使用svn开发项目

    那么首先什么是svn呢?官方有很好的解释,我说一下个人简单的理解,svn就是开源的版本控制软件, 那么什么是版本呢?简单的说版本就是标记,比如你买了一本书,同样的书名,但是版本不一定一样, 因为里面可 ...

  6. inner join

    select Person.LastName,Person.FirstName,Orders.OrderNo from Persons INNER JOIN Orders ON Person.Id_P ...

  7. 使用Spring简化JDBC操作数据库

    Spring的开发初衷是为了减轻企业级开发的复杂度,其对数据库访问的支持亦如此,使用Spring访问数据库能带来以下好处: 1.1     简化代码 使用原生的JDBC访问数据库,一般总是要执行以下步 ...

  8. LaTeX 中插入数学公式

    一.常用的数学符号 1.小写希腊字母 \alpha \nu \beta \xi \gamma o \delta \pi \epsilon \rho \zeta \sigma \eta \tau \th ...

  9. 我的C# - Web - DAL- DBHelper.cs

    其中的部分内容是别人的,我修改过了并加入了详细的注释!!! 一.这个DBHelper的大致块儿如下图: 二.下面是具体的源代码: //命名空间..... using System;using Syst ...

  10. sublime text 2 笔记

    sublime text 2 ,是代码程序员最佳编辑器,不是之一.其快捷优雅的操作风格,和便利的快捷键,是程序员码农的不二选择. 网上下载sublime text 2,支持文件拖放,文件夹拖放.3.0 ...