iOS学习,秒表计时
来源:互联网 发布:matlab矩阵绝对值 编辑:程序博客网 时间:2024/04/30 11:08
写在前面
刚开始学习iOS开发,在此过程中学习到很多知识点,写这些的目的,首先是为了给像我一样的小白提供一些参考资料,其次是对自己所学知识的一个总结与记录。
废话不多说,下面开始。
有时候我们的app可能需要一定定时器,就是类似秒表一样的东西,点开始后,秒表开始计时,点暂停,时间停下,再点开始继续计时。另一个按钮是reset,清空数据重新开始。
准备工作
IOS有个一个NSTIME类,封装的比较好了,不需要导入其他东西
正式开始
storyboard中,在原view中拖:
一个label,用于显示时间 。outlet
一个button,用于开始,暂停功能。action
一个button,用于reset。action
私有:
isStart用于表示按钮的状态,是该显示”开始“还是”暂停“。
countTime用于计时。
<pre name="code" class="objc">@interface TrainingModeViewController (){ /*开始button的标识量。 isStarted == kIsStarting说明此时button显示-->开始 否则,button显示-->暂停 */ BOOL isStarted ; float countTime; NSTimer *timer;}
开始、暂停按钮
主要还是用了NSTimer 的scheduledTimerWithTimeInterval::::(太长不打了)这个方法,意思就是每隔多久,调用哪里的哪个方法。
这里设定是每隔0.1秒,调用self中的updateTime这个方法。
具体代码:
<pre name="code" class="objc">- (IBAction)startOrEnd:(UIButton *)sender { //改变button状态 if (isStarted) { //button正显示开始,将改为暂停。说明将start程序 isStarted = NO; [_startOrEndButton setTitle:@"暂停" forState:UIControlStateNormal]; //开始计时 /* *@param Interval: 时间间隔,调用 selector * */ timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateTime) userInfo:nil repeats:YES]; } else { //button正显示暂停,将改为开始。说明将pause程序 isStarted = YES; [_startOrEndButton setTitle:@"开始" forState:UIControlStateNormal]; //暂停计时 [timer invalidate]; }}
#pragma mark 时间更新UI,定时回调- (void)updateTime { countTime +=0.1; NSString *timeForString = [NSString stringWithFormat:@"%02d:%02d:%04.1f", (int)(countTime / 3600),(int)(countTime / 60) ,countTime - ( 60 * (int)( countTime / 60 ) )]; _timeLabel.text = timeForString;}
重新开始按钮的action:
#pragma mark 重新开始- (IBAction)reset:(UIButton *)sender { //清空计时数据为0.0 countTime = 0.0f; _timeLabel.text = @"00:00:00.0"; //其他功能处理}
在拖label的时候最好在storyboard中设置label的text为: 00:00:00.0,一进去看到的就是这个格式。
0 0
- iOS学习,秒表计时
- android秒表计时代码
- 计时秒表程序设计
- J2ME实现精确秒表计时
- javascript计时秒表简单设计
- ios--秒表
- Qt小项目(3):秒表计时
- sap ABAP 显示计时秒表 函数“SAPGUI_PROGRESS_INDICATOR”
- 【iOS练习】秒表练习
- IOS之秒表计时器
- 使用js做一个简单的秒表计时
- 秒表
- 秒表
- 秒表
- 秒表
- IOS 精准计时
- ios 计时lable
- iOS 停止计时器计时
- 微服务的优缺点
- Java Hessian小试(转)
- Git远程操作详解
- 而他不能这样做 许多影子纤尘不染的别去
- ble协议栈cc2540x-1.3.2之通过key处理过程看任务、事件、消息机制
- iOS学习,秒表计时
- 错误error C2665: 'operator new' : none of the 5 overloads could convert all the argument types
- 饮食养生无限度补充营养非合理
- JAXB完成XML与Java对象的互转
- java基础
- android进程 清理及activity栈管理
- 春季皮肤干燥要多吃什么菜?
- ajax例子
- ios 注册打开方式