转载:原文地址 http://blog.sina.com.cn/s/blog_60b45f230100f3v2.html
今天在CocoaChina上面看到有人在问倒计时怎么做,记得以前在看Iphone31天的时候做过一个,今天翻出来运行不了了,原因是我的Iphone SDK升级到3.1了,以前使用的是2.2.1,在2.2.1里面是可以使用NSCalendarDate的,但是在3.1里面不能够使用,怎么办,只好用NSTimer了,最后还是给实现了。代码也比较简单,开始运行viewDidLoad的时候加载 [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];//使用timer定时,每秒触发一次
,然后就是写selector了。
- (void)timerFireMethod:(NSTimer*)theTimer
{
//NSDateFormatter *dateformatter = [[[NSDateFormatter alloc]init] autorelease];//定义NSDateFormatter用来显示格式
//[dateformatter setDateFormat:@"yyyy MM dd hh mm ss"];//设定格式
NSCalendar *cal = [NSCalendar currentCalendar];//定义一个NSCalendar对象
NSDateComponents *shibo = [[NSDateComponents alloc] init];//初始化目标时间(好像是世博会的日期)
[shibo setYear:2010];
[shibo setMonth:5];
[shibo setDay:1];
[shibo setHour:8];
[shibo setMinute:0];
[shibo setSecond:0];
NSDate *todate = [cal dateFromComponents:shibo];//把目标时间装载入date
[shibo release];
// NSString *ssss = [dateformatter stringFromDate:dd];
// NSLog([NSString stringWithFormat:@"shibo shi:%@",ssss]);
NSDate *today = [NSDate date];//得到当前时间
// NSString *sss = [dateformatter stringFromDate:today];
// NSLog([NSString stringWithFormat:@"xianzai shi:%@",sss]);
//用来得到具体的时差
unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *d = [cal components:unitFlags fromDate:today toDate:todate options:0];
lab.text = [NSString stringWithFormat:@"%d年%d月%d日%d时%d分%d秒",[d year],[d month], [d day], [d hour], [d minute], [d second]];
}
这样就实现了倒计时的功能。
分享到:
相关推荐
在iOS应用开发中,倒计时功能是一个常见的需求,...通过这个例子,我们可以了解到如何使用`NSTimer`、`NSCalendar`和`NSDateComponents`来实现倒计时功能。在实际应用中,可能还需要根据具体需求进行相应的调整和优化。
这在实现倒计时、动画效果或者周期性任务时非常有用。`NSTimer`不是线程安全的,通常在主线程中创建和触发。 二、创建NSTimer的类方法 1. `+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval ...
### 使用NSTimer实现倒计时 NSTimer是Foundation框架中的一个类,它可以用来安排一个定时器,以指定的时间间隔定期触发事件。要使用NSTimer来实现倒计时,你需要调用其scheduledTimerWithTimeInterval:target:...
二、使用NSTimer实现倒计时 使用NSTimer来实现倒计时功能是一个常见的方法。NSTimer可以让我们根据定时执行某些任务。在这个例子中,我们使用NSTimer来每秒减少倒计时的时间。下面是实现倒计时的代码: ```...
`NSTimer`是苹果iOS和macOS开发中的一个核心组件,用于执行周期性的任务或者在特定时间点触发某个动作。...实际项目中,你可以根据需求调整和扩展这个工具,例如增加时间设置、倒计时功能、或与其他系统服务集成。
我们将使用NSTimer来定期更新按钮上的显示文本,以实现倒计时效果。 3. **KVO(Key-Value Observing)**: 为了在倒计时过程中实时更新按钮的标题,我们可以利用KVO监听标题属性的变化。当倒计时时间改变时,自动...
本教程将深入探讨`NSTimer`的使用,包括如何创建、启动、暂停以及取消定时器,并通过一个倒计时10秒的示例来实际操作。 首先,`NSTimer`是`NSRunLoop`的一部分,它会在运行循环的适当模式下触发。创建`NSTimer`通常...
在iOS开发中,倒计时(Countdown Timer)是一种常见的功能,它被广泛应用于各种应用场景,比如考试倒计时、烹饪计时、闹钟等。本项目“到计时器”是一个用户可以自定义时间的倒计时工具,其核心在于能够接收用户输入...
它将倒计时功能封装在一个简单易用的库中,使得开发者只需要寥寥几行代码就能实现倒计时效果,大大提高了开发效率。 该框架的核心思想是利用UILabel来显示倒计时的文字内容,通过定时器(NSTimer)来控制时间的流逝...
本文将详细阐述如何在iOS平台上实现倒计时功能,以及相关的编程技巧。 首先,我们需要了解的是iOS应用中的时间处理。在iOS中,我们通常使用Foundation框架中的`NSDate`, `NSTimeInterval`, `NSCalendar`, `...
1. **自定义按钮类**:为了实现倒计时功能,我们需要创建一个继承自`UIButton`的自定义类,如`CountdownButton`,在此类中添加倒计时逻辑。 2. **属性设置**:在自定义类中,添加表示倒计时时间的属性(如`...
6. **错误处理**:在实现倒计时功能时,应考虑到可能出现的异常情况,比如网络延迟、系统时间调整等,确保这些情况下的倒计时行为符合预期。 7. **性能优化**:如果倒计时涉及大量的计算或者复杂的逻辑,需要关注...
在`LYDaoJiShi.m`的实现中,开发者可能会使用`CADisplayLink`或`NSTimer`来实现每隔一定时间(如1秒)调用`updateDigitLabels`方法,动态更新倒计时。同时,为了防止倒计时过程中用户界面旋转导致布局变化,还需要...
接下来,我们来看一下如何实现倒计时。在iOS中,我们可以使用NSTimer类来定期执行任务,比如每秒更新一次倒计时的数值。创建一个NSTimer实例,设置好时间间隔(如1秒),并关联一个目标方法(这个方法会处理倒计时...
2. **使用Swift实现倒计时** - **初始化时间**: 首先,你需要设定开始时间和结束时间,这两个时间通常用`NSDate`对象表示。你可以通过`NSDateFormatter`将字符串转换为`NSDate`。 - **计算时间差**: 使用`...
以下是一个使用GCD实现倒计时的例子: ```swift let queue = DispatchQueue(label: "countdownQueue", attributes: .global) var secondsRemaining = 60 func startCountdown() { queue.asyncAfter(deadline...
本篇将详细讲解如何使用`NSTimer`来实现这样的倒计时效果。 首先,我们需要理解`NSTimer`的基本用法。`NSTimer`是Apple提供的一个定时器类,它可以按照指定的时间间隔重复执行某项任务。创建一个`NSTimer`通常包括...
3. **计时器**:使用NSTimer(Objective-C)或Timer(Swift)来实现倒计时逻辑。计时器会在指定的时间间隔内触发一个回调,每次回调时,你都需要更新UILabel上的时间显示,直到达到零。 4. **回调方法**:这里有两...
要用GCD实现倒计时,通常需要创建一个dispatch_source_t类型的数据源,设置其事件类型为定时,并指定时间间隔。然后在事件触发时更新倒计时显示,直到达到预设的零值。在这个过程中,可以利用`dispatch_after`函数...
首先,为了实现倒计时功能,EBCountDownButton控件内部会使用NSTimer对象,该对象按照指定的时间间隔触发事件。开发者可以通过设置`countDownTime`属性来设定倒计时的总秒数,然后调用`startCountDown`方法启动倒...