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

 更新时间:2015年10月29日 09:51:38   作者:念茜  
这篇文章主要介绍了一个iOS上的秒表小应用的实现方法分享,代码基于传统的Objective-C,需要的朋友可以参考下

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

2015102994851336.png (324×486)

主要实现的功能:
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; 

 


2015102994921137.png (320×480)

2015102994939154.png (320×480)

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

相关文章

  • iOS视频编辑之添加音轨的方法

    iOS视频编辑之添加音轨的方法

    本篇文章主要介绍了iOS视频编辑之添加音轨的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • IOS 创建彩色二维码实例详解

    IOS 创建彩色二维码实例详解

    这篇文章主要介绍了IOS 创建彩色二维码实例详解的相关资料,这里提供实例代码,需要的朋友可以参考下
    2016-12-12
  • iOS App开发中用CGContextRef绘制基本图形的基本示例

    iOS App开发中用CGContextRef绘制基本图形的基本示例

    这篇文章主要介绍了iOS App开发中用CGContextRef绘制基本图形的基本示例,CGContextRef同时可以进行图形颜色的填充以及文字的书写,需要的朋友可以参考下
    2016-05-05
  • iOS11实现App内自动连接Wi-Fi的方法

    iOS11实现App内自动连接Wi-Fi的方法

    这篇文章主要给大家介绍了关于iOS11实现App内自动连接Wi-Fi的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10
  • iOS实现微信/QQ显示最近拍摄图片的功能实例代码

    iOS实现微信/QQ显示最近拍摄图片的功能实例代码

    如果你刚刚拍摄了图片,在使用微信/QQ发生消息时会显示“你可能要发送的图片”,这个功能非常人性化,怎么实现的呢?下面小编给大家分享iOS实现微信/QQ显示最近拍摄图片的功能实例代码,一起看看吧
    2017-03-03
  • iOS开发之触摸事件以及手势

    iOS开发之触摸事件以及手势

    这篇文章主要为大家详细介绍了iOS开发之触摸事件以及手势的相关资料,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • iOS 本地视频和网络视频流播放实例代码

    iOS 本地视频和网络视频流播放实例代码

    本篇文章主要介绍了iOS 本地视频和网络视频流播放实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • iOS图片模糊效果的实现方法

    iOS图片模糊效果的实现方法

    这篇文章主要为大家详细介绍了iOS图片模糊效果的三种实现方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 浅谈IOS如何对app进行安全加固

    浅谈IOS如何对app进行安全加固

    运行在越狱设备上的IOS app,非常容易遭到破解分析,这里列举一些可以加大破解难度的方法,希望有所帮助。
    2021-06-06
  • iOS中containsString和rangeOfString的区别小结

    iOS中containsString和rangeOfString的区别小结

    这篇文章主要给大家总结介绍了关于iOS中containsString和rangeOfString的一些区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01

最新评论