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

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 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01