好贷网好贷款

【ios实例小计】NSTimer 定时器的使用

发布时间:2016-12-4 16:28:42 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"【ios实例小计】NSTimer 定时器的使用",主要涉及到【ios实例小计】NSTimer 定时器的使用方面的内容,对于【ios实例小计】NSTimer 定时器的使用感兴趣的同学可以参考一下。

预备知识: 1.NSTimer其实是将一个监听加入的系统的RunLoop中去,当系统runloop到如何timer条件的循环时,会调用timer一次,当timer执行完,也就是回调函数执行之后,timer会再一次的将自己加入到runloop中去继续监听。(此处不深入讨论,有兴趣的可以去苹果官方文档RunLoop看看) 2. NSTimer是Cocoa中比较常用的定时器类 基本操作如下: handleTimer方法可以自行定义。在需要的地方创建timer即可,handleTimer就可以每0.5秒执行一次。 - (void) handleTimer: (NSTimer *) timer { //在这里进行处理 } // 安装timer(注册timer) NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval: 0.5// 当函数正在调用时,及时间隔时间到了 也会忽略此次调用 target: self selector: @selector(handleTimer:) userInfo: nil repeats: YES]; // 如果是NO 不重复,则timer在触发了回调函数调用完成之后 会自动释放这个timer,以免timer被再一次的调用,如果是YES,则会重复调用函数,调用完函数之后,会将这个timer加到RunLoop中去,等待下一次的调用,直到用户手动释放timer( [timer invalidate];)。 1.创建工程minutesToMidnight 2.我用的6.1版本的jdk,添加如下代码: // // ViewController.h // minutesToMidnight // // Created by zhang xujun on 13-9-3. // Copyright (c) 2013年 zhang xujun. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController :UIViewController{ NSTimer *timer; IBOutlet UILabel *countdownLabel; } @property(nonatomic,retain) UILabel *countdownLabel; @property (nonatomic, retain) NSTimer *timer; -(void)onTimer; @end 上面这个.h文件内容和作者的是一样的,定义了一个用于显示的label,一个定时器。和一个用于定时期调用的方法onTimer(); 继续添加代码: // // ViewController.m // minutesToMidnight // // Created by zhang xujun on 13-9-3. // Copyright (c) 2013年 zhang xujun. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize countdownLabel; @synthesize timer; - (void)viewDidLoad { [super viewDidLoad]; [countdownLabel setFont:[UIFont fontWithName:@"DBLCDTempBlack" size:30.0]]; countdownLabel.text = @"00:00:00"; self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(onTimer) userInfo:nil repeats: YES]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } -(void)onTimer{ NSDate* now = [NSDate date]; NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *dateComponents = [gregorian components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:now]; NSInteger hour = [dateComponents hour]; NSInteger min = [dateComponents minute]; NSInteger sec = [dateComponents second]; sec = 60 - sec; min = 59 - min; hour = 23 - hour; countdownLabel.text = [NSString stringWithFormat:@"%d:%d:%d", hour, min,sec]; } @end 这里面有些许不同,由于jdk版本不同,6.1作和很多优化,去掉了手动关闭的部分。 主要功能:viewDidload加在视图时,初始化label和定时期。其中定时期每一秒调用一次onTimer(); onTimer方法中: 1.首先获取当前时间; 2.NSCalendar日历类 Cocoa中对日期和时间的处理  NSCalendar用于处理时间相关问题。比如比较时间前后、计算日期所的周别等。 创建或初始化可用以下方法     + (id)currentCalendar; 取得当前用户的逻辑日历(logical calendar)     + (id)autoupdatingCurrentCalendar; 取得当前用户的逻辑日历(logical calendar), ......     - (id)initWithCalendarIdentifier:(NSString *)identifier; 初始化为各种日历。identifier的范围可以是:        NSGregorianCalendar 阳历        NSBuddhistCalendar 佛历        NSChineseCalendar 中国日历        NSHebrewCalendar 希伯来日历        NSIslamicCalendar 伊斯兰日历        NSIslamicCivilCalendar 伊斯兰民事日历        NSJapaneseCalendar 日本日历 3.获得当前时间的时、分、秒的数字,用于显示。要得到正确的星期几,必须创建一个NSCalendar日历实例,创建一个NSDate对象并使用dateFromComponents:方法,然后使用components:fromDate:(这是获得时间的方法) 4.拖拽页面: 首先设置背景色为黑色:在xib文件中鼠标选中view,在右边设置backgroundcolor颜色为黑色,然后拖拽一个label放在view上面,属性随便设置,只要满足能够显示时间就行,其中label中的字体size在代码中设置为30,在xib中的设置会被覆盖,最后让countdownLabel作为时间的输出关联,如下图:从owner   control+左键 拖拽到label上面即可。 效果图: 这样就完成倒计时了,里面加上了一些用到的知识,另外第一次写排版不好,大家勿喷。 参考: http://blog.sina.com.cn/s/blog_5fae23350100djg2.html http://www.cocoachina.com/b/?cat=42 http://blog.csdn.net/namehzf/article/details/7294766 http://blog.csdn.net/wishfly/article/details/7370277 http://www.cnblogs.com/wujian1360/archive/2011/09/05/2168007.html http://blog.csdn.net/ch_soft/article/details/7387694

上一篇:java--基于socket的网络传输开发
下一篇:0903

相关文章

相关评论