简单的秒表定时器

思路:

1.分别添加秒表中的上部分,样式如 00 :00 : 00 . 00,分别表示时,分,秒,毫秒一共用7个labe实现

2.设置按钮,分别是开始,停止,复位

3,通过字符串转换成数字,和数字转换成字符串来进行秒表的设计

  1 #import "ViewController.h"
  2
  3 #import "UIView+FrameExtension.h"
  4
  7 #define kDeviceWidth [UIScreen mainScreen].bounds.size.width
  8
  9 #define kDeviceHeight [UIScreen mainScreen].bounds.size.height
 10
 13 @interface ViewController (){
 14
 15     UILabel *_lbl1;
 16
 17     UILabel *_lbl2;
 18
 19     UILabel *_lbl3;
 20
 21     UILabel *_lbl4;

 25     NSTimer *_timer;
 26
 27     BOOL    _isRunning;
 28
 29 }
 33 @end
 34
 37 @implementation ViewController
 38
 41 - (void)viewDidLoad {
 42
 43     [super viewDidLoad];
 44
 47     [self createLabel];     //创建7个标签
 48
 49     [self createTimer];     //创建1个定时器
 50
 51     [self createButton];    //创建3个按
 52
 53 }
 54
 57 -(void)createLabel{

 61     UILabel *lbl1 = [[UILabel alloc]initWithFrame:CGRectMake(90, 200, 30, 40)];
 62
 63     lbl1.text = @"00";
 64
 65     lbl1.textColor = [UIColor redColor];
 66
 67     [self.view addSubview:lbl1];
 68
 69     _lbl1 = lbl1;
 70
 73     UILabel *lbl11 = [[UILabel alloc]initWithFrame:CGRectMake(lbl1.right, lbl1.y, 10, lbl1.height)];
 74
 75     lbl11.text = @":";
 76
 77     lbl11.textColor = [UIColor redColor];
 78
 79     [self.view addSubview:lbl11];
 80
 83      UILabel *lbl2 = [[UILabel alloc]initWithFrame:CGRectMake(lbl11.right, lbl1.y, lbl1.width, lbl1.height)];
 84
 85     lbl2.text = @"00";
 86
 87     lbl2.textColor = [UIColor redColor];
 88
 89     [self.view addSubview:lbl2];
 90
 91     _lbl2 = lbl2;
 92
 95     UILabel *lbl22 = [[UILabel alloc]initWithFrame:CGRectMake(lbl2.right, lbl1.y, lbl11.width, lbl1.height)];
 96
 97     lbl22.text = @":";
 98
 99     lbl22.textColor = [UIColor redColor];
100
101     [self.view addSubview:lbl22];
102
103     UILabel *lbl3 = [[UILabel alloc]initWithFrame:CGRectMake(lbl22.right, lbl1.y, lbl1.width, lbl1.height)];
104
105     lbl3.text = @"00";
106
107     lbl3.textColor = [UIColor redColor];
108
109     [self.view addSubview:lbl3];
110
111     _lbl3 = lbl3;
112
115     UILabel *lbl33 = [[UILabel alloc]initWithFrame:CGRectMake(lbl3.right, lbl1.y, lbl11.width, lbl1.height)];
116
117     lbl33.text = @".";
118
119     lbl33.textColor = [UIColor redColor];
120
121     [self.view addSubview:lbl33];
122
123     UILabel *lbl4 = [[UILabel alloc]initWithFrame:CGRectMake(lbl33.right, lbl1.y, lbl1.width, lbl1.height)];
124
125     lbl4.text = @"00";
126
127     lbl4.textColor = [UIColor redColor];
128
129     [self.view addSubview:lbl4];
130
131     _lbl4 = lbl4;
132
137 }

141 -(void)createButton{
142
146
147     UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(70, _lbl1.bottom+20, 60, 40)];
148
149     [btn1 setTitle:@"开始" forState:UIControlStateNormal];
150
151     [self.view addSubview:btn1];
152
153     [btn1 setBackgroundImage:[UIImage imageNamed:@"logoff_btn_s"] forState:UIControlStateNormal];
154
155     [btn1 setBackgroundImage:[UIImage imageNamed:@"submit_discussion_n"] forState:UIControlStateHighlighted];
156
157     [btn1 addTarget:self action:@selector(start ) forControlEvents:UIControlEventTouchUpInside];
158
163     UIButton *btn2 = [[UIButton alloc]initWithFrame:CGRectMake(btn1.right+10, btn1.y, btn1.width, btn1.height)];
164
165     [btn2 setTitle:@"停止" forState:UIControlStateNormal];
166
167     [self.view addSubview:btn2];
168
169     [btn2 setBackgroundImage:[UIImage imageNamed:@"logoff_btn_s"] forState:UIControlStateNormal];
170
171     [btn2 setBackgroundImage:[UIImage imageNamed:@"submit_discussion_n"] forState:UIControlStateHighlighted];
172
173     [btn2 addTarget:self action:@selector(stop ) forControlEvents:UIControlEventTouchUpInside];
174
179     UIButton *btn3 = [[UIButton alloc]initWithFrame:CGRectMake(btn2.right+10,btn1.y , btn1.width, btn1.height)];
180
181     [btn3 setTitle:@"复位" forState:UIControlStateNormal];
182
183     [self.view addSubview:btn3];
184
185     [btn3 setBackgroundImage:[UIImage imageNamed:@"logoff_btn_s"] forState:UIControlStateNormal];
186
187     [btn3 setBackgroundImage:[UIImage imageNamed:@"submit_discussion_n"] forState:UIControlStateHighlighted];
188
189     [btn3 addTarget:self action:@selector(fuwei ) forControlEvents:UIControlEventTouchUpInside];
190
191 }
192
195 -(void)start{

199     [[NSRunLoop mainRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];
200
201     _isRunning = YES;
202
204
205     if (_isRunning) {       //表示定时器正在运行
206
207         [_timer setFireDate:[NSDate distantPast]];
208
211     }else{
212
213         [_timer setFireDate:[NSDate distantFuture]];
214
215     }
216
217 }
218
221 -(void)stop{
222 225     _isRunning = !_isRunning;
226
229     if (_isRunning) {       // 表示定时器正在运行
230
233     }else{
234
235         [_timer setFireDate:[NSDate distantFuture]];
236
237     }
238
239     _isRunning = NO;
240
241 }
242
245 -(void)fuwei{
246
251         NSString* str4 = _lbl4.text;
252
253         NSString* str3 = _lbl3.text;
254
255         NSString* str2 = _lbl2.text;
256
257         NSString* str1 = _lbl1.text;
258
261         int x4 = [str4 intValue];
262
263         int x3 = [str3 intValue];
264
265         int x2 = [str2 intValue];
266
267         int x1 = [str1 intValue];
268
271         x4 = x3 = x2 = x1 = 0;
272
275         NSString* str44 = [NSString stringWithFormat:@"%02d",x4];
276
277         NSString* str33 = [NSString stringWithFormat:@"%02d",x3];
278
279         NSString* str22 = [NSString stringWithFormat:@"%02d",x2];
280
281         NSString* str11 = [NSString stringWithFormat:@"%02d",x1];
282
283         _lbl4.text = str44;
284
285         _lbl3.text = str33;
286
287         _lbl2.text = str22;
288
289         _lbl1.text = str11;
290
293     _isRunning = !_isRunning;
294
297     if (_isRunning) {       // 表示定时器正在运行
298 

301     }else{
302
303         [_timer setFireDate:[NSDate distantFuture]];
304
305     }
306
307     _isRunning = NO;
308 

311 }
312 

315 -(void)createTimer{

319     _timer = [NSTimer timerWithTimeInterval:0.01 target:self selector:@selector(move ) userInfo:nil repeats:YES];
320
323     _isRunning = NO;
324
327     //     下面这种方法创建的定时器,会自动的加入运行循环
328
329     //    _timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(move) userInfo:nil repeats:YES];
330
331 }
332
334
335 -(void)move{
336
339      NSString* str4 = _lbl4.text;
340
341      NSString* str3 = _lbl3.text;
342
343      NSString* str2 = _lbl2.text;
344
345      NSString* str1 = _lbl1.text;
346
349     int x4 = [str4 intValue];
350
351     int x3 = [str3 intValue];
352
353     int x2 = [str2 intValue];
354
355     int x1 = [str1 intValue];
356
359     x4++;
360
363     if (x4 == 100 ) {
364
365         x3 = x3 + 1;
366
367         x4 = 0;
368
369         if (x3 == 60) {
370
371             x2 = x2 + 1;
372
373             x3 = 0;
374
375             if (x2 == 60 ) {
376
377                 x1 = x1 + 1;
378
379                 x2 = 0;
380
381                 if (x1 == 24 ) {
382
383                     x4 = x3 = x2 = x1 = 0;
384
385                 }
386
387             }
388
389         }
390
391     }
392
394
395     NSString* str44 = [NSString stringWithFormat:@"%02d",x4];
396
397     NSString* str33 = [NSString stringWithFormat:@"%02d",x3];
398
399     NSString* str22 = [NSString stringWithFormat:@"%02d",x2];
400
401     NSString* str11 = [NSString stringWithFormat:@"%02d",x1];
402
403     _lbl4.text = str44;
404
405     _lbl3.text = str33;
406
407     _lbl2.text = str22;
408
409     _lbl1.text = str11;
410
411 }
412
413  @end

开始

停止

复位

源文件在这里,希望可以帮到你:http://pan.baidu.com/s/1kVhHiHh

时间: 2024-08-19 05:24:49

简单的秒表定时器的相关文章

一个简单的Spring定时器例子 注解方式

首先在applicationContext.xml中增加 文件头中增加一条 xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation 中增加一条 http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd <beans xmlns:task=&quo

C# 一个简单的秒表引发的窗体卡死问题

一个秒表程序也是我的一个心病,因为一直想写这样的一个东西,但是总往GUI那边想,所以就比较怵,可能是上学的时候学MFC搞出的后遗症吧,不过当我今天想好用Win Form(话说还是第一次写win form)写这么一个东西的时候,居然so easy. 所以说,做不了不可怕,怕的是你不去做,因为你不去做,你就永远不知道你能不能做它.事实证明,大部分你犹豫能不能做的事情,实际上你都能搞定. 虽然成功实现了一个秒表的简单功能,即开始计时和停止.但是却引发了一个关于win form和C#线程的问题. 下面一

Golang中使用heap编写一个简单高效的定时器模块

定时器模块在服务端开发中非常重要,一个高性能的定时器模块能够大幅度提升引擎的运行效率.使用Golang和heap实现一个通用的定时器模块,代码来自:https://github.com/xiaonanln/goTimer 也可以查看文档:http://godoc.org/github.com/xiaonanln/goTimer,下面是完整的代码,并进行适当的注释和分析. 从性能测试结果来看,基于heap的定时器模块在效率上并不会比时间轮(TimeWheel)的实现慢多少,但是逻辑上要简单很多.

简单的js定时器

var flag = 0; var time = 0; var stoptime = setInterval(function(){ if (flag<9999999) { //执行定时器 } else{ //停止定时器 clearInterval(stoptime); } flag++; //1000表示的是毫秒,为1秒 },1000); 以作记录,2018年7月17日18:35:56 原文地址:https://www.cnblogs.com/sjfsjf/p/9325167.html

简单的jQuery定时器

在jQuery Timers中提供了3个函数式 everyTime(时间间隔, [计时器名称], 函式名称, [次数限制], [等待函式程序完成]) oneTime(时间间隔, [计时器名称], 呼叫的函式) stopTime ([计时器名称], [函式名称]) everyTime函数式 everyTime函数式相当于js中的循环定时器 1:每间隔一秒钟循环执行a() function a(){ alert(1); } $('body').everyTime('1s',a); 2:简写版 $('

简单的秒表实例

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>日期对象</title> </head> <body> <div id="div">16:30:00</div> <script> function getDate(){ var

【java并发】传统线程技术中的定时器技术

传统线程技术中有个定时器,定时器的类是Timer,我们使用定时器的目的就是给它安排任务,让它在指定的时间完成任务.所以先来看一下Timer类中的方法(主要看常用的TimerTask()方法): 返回值 方法名 方法描述 void schedule(TimerTask task, long delay) 安排在指定延迟后执行指定的任务. void schedule(TimerTask task, long delay, long period) 安排指定的任务从指定的延迟后开始进行重复的固定延迟执

毫秒,微妙级别软件定时器

单片机开发中,软件定时器是常用的工具.定时执行特定任务和延时功能,都可以用软件定时器实现. 常见的延时函数的实现做法有: 1. 使用空指令进行延时,通过控制空指令的执行次数,进行延时.优点:不需要占用系统外设.缺点:系统运行指定个空指令的时间不稳定,中途出现的中断处理会严重影响计时的精确性. 2.使用单片机的定时器外设,设定特定的时间产生中断,进行计时.优点:计时准确,不受其他中断影响计时.缺点:浪费单片机外设资源,并且延时处理不能嵌套调用,灵活性不够. 这里要介绍的是利用单片机内部的sysTi

spring框架中定时器的配置及应用

---恢复内容开始--- 首先我们来简单了解下定时器: 1. 定时器的作用 在实际的开发中,如果项目中需要定时执行或者需要重复执行一定的工作,定时器显现的尤为重要. 当然如果我们不了解定时器就会用线程去实现 2. 自己实现定时器的工作很复杂,如果实现不好占用内存过多,系统就此Over,所以处理定时执行或者重复执行的任务,定时器是很好的选择 3. java中常见的定时器 1)借助Java.util.Timer来实现 2)OpenSymphony社区提供的Quartz来实现 第一种定时器比较简单,我