服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - 一个iOS上的秒表小应用的实现方法分享

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

2020-12-26 16:51念茜 IOS

这篇文章主要介绍了一个iOS上的秒表小应用的实现方法分享,代码基于传统的Objective-C,需要的朋友可以参考下

模仿实现一下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; 

 

 

 

 

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

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

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

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

延伸 · 阅读

精彩推荐
  • IOSiOS中滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和Masonry简单使用)

    iOS中滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和

    这篇文章主要介绍了iOS中滑动控制屏幕亮度和系统音量(附加AVAudioPlayer基本用法和Masonry简单使用)的相关资料,需要的朋友可以参考下...

    CodingFire13652021-02-26
  • IOSiOS实现控制屏幕常亮不变暗的方法示例

    iOS实现控制屏幕常亮不变暗的方法示例

    最近在工作中遇到了要将iOS屏幕保持常亮的需求,所以下面这篇文章主要给大家介绍了关于利用iOS如何实现控制屏幕常亮不变暗的方法,文中给出了详细的...

    随风13332021-04-02
  • IOSiOS开发技巧之状态栏字体颜色的设置方法

    iOS开发技巧之状态栏字体颜色的设置方法

    有时候我们需要根据不同的背景修改状态栏字体的颜色,下面这篇文章主要给大家介绍了关于iOS开发技巧之状态栏字体颜色的设置方法,文中通过示例代码...

    梦想家-mxj8922021-05-10
  • IOSiOS开发之视图切换

    iOS开发之视图切换

    在iOS开发中视图的切换是很频繁的,独立的视图应用在实际开发过程中并不常见,除非你的应用足够简单。在iOS开发中常用的视图切换有三种,今天我们将...

    执着丶执念5272021-01-16
  • IOSiOS中MD5加密算法的介绍和使用

    iOS中MD5加密算法的介绍和使用

    MD5加密是最常用的加密方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码。对输入信息生成唯一的128位散列值(32个字符)。这篇文...

    LYSNote5432021-02-04
  • IOS详解iOS中多个网络请求的同步问题总结

    详解iOS中多个网络请求的同步问题总结

    这篇文章主要介绍了详解iOS中多个网络请求的同步问题总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    liang199111302021-03-15
  • IOSiOS自定义UICollectionViewFlowLayout实现图片浏览效果

    iOS自定义UICollectionViewFlowLayout实现图片浏览效果

    这篇文章主要介绍了iOS自定义UICollectionViewFlowLayout实现图片浏览效果的相关资料,需要的朋友可以参考下...

    jiangamh8882021-01-11
  • IOSiOS中UILabel实现长按复制功能实例代码

    iOS中UILabel实现长按复制功能实例代码

    在iOS开发过程中,有时候会用到UILabel展示的内容,那么就设计到点击UILabel复制它上面展示的内容的功能,也就是Label长按复制功能,下面这篇文章主要给大...

    devilx12792021-04-02