当前位置: 首页 > 编程笔记 >

一个iOS上的秒表小应用的实现方法分享

那宏大
2023-03-14
本文向大家介绍一个iOS上的秒表小应用的实现方法分享,包括了一个iOS上的秒表小应用的实现方法分享的使用技巧和注意事项,需要的朋友参考一下

模仿实现一下ios系统应用时钟里的秒表程序,就是这个应用:

主要实现的功能:
1.由start/stop键实现计时
2.有reset/lap键实现复位和计次

需要思考的点:
1.时间的表示方法(有很多种思路)
2.计次数据的倒序排列,即计次1的数据在最底端,依次向上为计次2,计次3的时间数据

我的实现:
ARC省去了我们自行管理内存的大部分事情,写惯了c++于是舒服了很多


- (IBAction) startOrstop:(UIButton *)sender  

{  

    //点击切换按钮背景图  

    UIImage *newImage = (checked) ? [UIImage imageNamed:@"red.png"] : [UIImage imageNamed:@"green.png"];  

    [leftBtn setBackgroundImage:newImage forState:UIControlStateNormal];  

      

    NSString *titlel = (checked) ? (@"Stop") : (@"Start");  

    [leftBtn setTitle:titlel forState:UIControlStateNormal];  

    NSString *titler = (checked) ? (@"Lap") : (@"Reset");  

    [rightBtn setTitle:titler forState:UIControlStateNormal];  

    

        

    if (checked)   //start  

    {  

        timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateTime) userInfo:nil repeats:YES];  

    }else {        //stop  

        [timer invalidate];  

    }  

      

    checked = !checked;  

}  

  

- (IBAction) resetOrLap:(UIButton *)sender  

{  

    static NSInteger count = 1;  

      

    if (checked) //reset  

    {  

        time = time_lap = 0.0;  

        timestr = [NSString stringWithFormat:@"00:00.0"];  

        [label setText:timestr];  

        list_time = list_lap = nil;  

        count = 1;  

        [tableview reloadData];  

          

    }else {      //lap  

        if (list_time == nil) {  

            list_time = [[NSArray alloc]initWithObjects:timestr_lap, nil];  

            list_lap = [[NSArray alloc]initWithObjects:[NSString stringWithFormat:@"%d",count++], nil];  

        }else {  

#if 0  

            [list arrayByAddingObject:timestr];  

#else  

            NSArray *array = [[NSArray alloc]initWithObjects:timestr_lap, nil];  

            list_time = [array arrayByAddingObjectsFromArray:list_time];  

            array = [[NSArray alloc]initWithObjects:[NSString stringWithFormat:@"%d",count++], nil];  

            list_lap = [array arrayByAddingObjectsFromArray:list_lap];  

#endif  

        }  

        time_lap = 0;  

        [tableview reloadData];  

     }  

}  

  

- (float) updateTime  

{  

    time+=0.1;  

    time_lap +=0.1;  

    timestr = [NSString stringWithFormat:@"%02d:%04.1f",(int)(time / 60) ,time - ( 60 * (int)( time / 60 ) )];  

    timestr_lap = [NSString stringWithFormat:@"%02d:%04.1f",(int)(time_lap / 60) ,time_lap - ( 60 * (int)( time_lap / 60 ) )];  

    [label setText:timestr];  

    return time;  

}  

  

  

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section  

{  

    return [list_time count];  

}  

  

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  

{  

    static NSString *tableViewIdentifier = @"tableViewIdentifier";  

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:tableViewIdentifier];  

    if (cell == nil) {  

        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:tableViewIdentifier];   

    }  

      

    NSUInteger row = [indexPath row];  

      

    cell.detailTextLabel.text = [list_time objectAtIndex:row];  

    cell.detailTextLabel.textColor = [UIColor blackColor];  

    cell.detailTextLabel.font = [UIFont boldSystemFontOfSize:25.0];  

    cell.detailTextLabel.textAlignment = UITextAlignmentCenter;  

      

    NSString *text = [[NSString alloc]initWithFormat:@"lap %@", [list_lap objectAtIndex:row]];  

    cell.textLabel.text = text;  

    return cell;  

} 

 


待改进的地方:
1.对于时间的计时操作和UI事件应该分不同线程实现,这里我偷懒了
2.对于时间的表示方法其实也是很偷懒的,没有按照标准的秒分进位表示

 类似资料:
  • 本文向大家介绍C#实现毫秒转换成时分秒的方法,包括了C#实现毫秒转换成时分秒的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现毫秒转换成时分秒的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 本文向大家介绍用js实现一个加法的方法相关面试题,主要包含被问及用js实现一个加法的方法时的应答技巧和注意事项,需要的朋友参考一下 JavaScript 能表示并进行精确算术运算的整数范围为:[-253-1,253-1]。 只考虑大整数相加的情况(不算0.1+0.2之类的):

  • 本文向大家介绍javascript实现秒表计时器的制作方法,包括了javascript实现秒表计时器的制作方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js秒表计时器的制作代码,供大家参考,具体内容如下 具体代码: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍实现一个isNaN的方法相关面试题,主要包含被问及实现一个isNaN的方法时的应答技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍分享一些iOS开发实用的小技巧,包括了分享一些iOS开发实用的小技巧的使用技巧和注意事项,需要的朋友参考一下 1.设置navigationbar title颜色 2.获取UIColor RGB 3.修改textField的placeholder的字体颜色、大小 4.将color转为UIImage 5.加载启动图的时候隐藏statusbar 在info.plist中加入Status b

  • 本文向大家介绍JavaScript分秒倒计时器实现方法,包括了JavaScript分秒倒计时器实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript分秒倒计时器实现方法。分享给大家供大家参考。具体分析如下: 一、基本目标 在JavaScript设计一个分秒倒计时器,一旦时间完成使按钮变成不可点击状态 具体效果如下图,为了说明问题,调成每50毫秒也就是每0.05跳一次表

  • 本文向大家介绍Android时分秒计时器的两种实现方法,包括了Android时分秒计时器的两种实现方法的使用技巧和注意事项,需要的朋友参考一下 可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器。这个东西其实实现起来非常简单。 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲述一下了。 是的,就这么简单。java代码同样 超简单有

  • 本文向大家介绍请使用js实现一个秒表计时器的程序相关面试题,主要包含被问及请使用js实现一个秒表计时器的程序时的应答技巧和注意事项,需要的朋友参考一下