首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
移动开发
> 详细
iOS 实现倒计时
时间:
2015-04-22 18:15:23
阅读:
196
评论:
0
收藏:
0
[点我收藏+]
标签:
ios
nstimer
倒计时
#import "ViewController.h"
#import "QSSDateHelper.h"
@interface ViewController ()
@property (nonatomic,strong) UIButton *btn;
@property (nonatomic,assign) BOOL isTouch;
@property (nonatomic,assign) NSInteger time;
@property (nonatomic,assign) int year;
@property (nonatomic,assign) int mouth;
@property (nonatomic,assign) int day;
@property (nonatomic,assign) int hour;
@property (nonatomic,assign) int minute;
@property (nonatomic,assign) int second;
@property (nonatomic,assign) int myTouchSecond;
@property NSDate *touchDate;
@property NSCalendar *cal;
@property NSTimer *timer ;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self initBtn];
self.isTouch=NO;
}
- (void)dealloc{
[self.timer invalidate];
self.timer=nil;
self.time=0;
}
- (void)initBtn{
self.btn=[[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
[self.btn setTitle:@"倒计时" forState:UIControlStateNormal];
[self.btn setBackgroundColor:[UIColor lightGrayColor]];
[self.view addSubview:self.btn];
[self.btn addTarget:self action:@selector(releaseTime) forControlEvents:UIControlEventTouchUpInside];
}
- (void)timerFireMethod:(NSTimer *)timer{
//NSDate *dd = [NSDate dateWithTimeIntervalSince1970:self.myTouchSecond];
int targetSecond = self.myTouchSecond + 10*60;//目标的时间
//把目标的秒数转化为固定格式的秒数
NSDate *dd = [NSDate dateWithTimeIntervalSince1970:targetSecond];
unsigned int time2=NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;
NSCalendar *cal=[NSCalendar currentCalendar];
NSDateComponents *t2=[cal components:time2 fromDate:dd];
//==================开始定时的时间=====================
unsigned int time=NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;
NSDateComponents *t=[self.cal components:time fromDate:self.touchDate]; //开始定时的时间
NSLog(@"开始倒计时的时间:%d天%d小时%d分钟%d秒",(int)t.day,(int)t.hour,(int)t.minute,(int)t.second);
//==================目标时间==========================
NSLog(@"目标时间:%d天%d小时%d分钟%d秒",(int)t2.day,(int)t2.hour,(int)t2.minute,(int)t2.second);
//目标时间
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setYear:t2.year];
[components setMonth:t2.month];
[components setDay:t2.day];
[components setHour:t2.hour];
[components setMinute:t2.minute];
NSLog(@"minute +++++ 10 %d",self.minute+10);
[components setSecond:self.second];
unsigned int unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
//NSDate *fireDate = [calendar dateFromComponents:components];//目标时间
NSDate *nowhhhhh=[NSDate date];
NSDateComponents *d = [calendar components:unitFlags fromDate:nowhhhhh toDate:dd options:0];//计算时间差
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:[NSString stringWithFormat:@"%d分钟%d秒",(int)[d minute],(int)[d second]] message:@"倒计时" delegate:self cancelButtonTitle:@"我知道了" otherButtonTitles:nil, nil];
alert.delegate=self;
[alert show];
}
- (void)releaseTime{
self.time++;
self.isTouch=YES;
if (self.time==1){
NSLog(@"开始倒计时");
//当前时间 只调用一次这个方法。。。
NSDate *now=[NSDate date];
NSCalendar *cal=[NSCalendar currentCalendar];
unsigned int time=NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;
NSDateComponents *t=[cal components:time fromDate:now];
self.year=(int)[t year];
self.mouth=(int)[t month];
self.day=(int)[t day];
self.hour=(int)[t hour];
self.minute=(int)[t minute];
self.second=(int)[t second];
NSTimeInterval time2=[[NSDate date] timeIntervalSince1970];
self.myTouchSecond = time2;
NSLog(@"date\n%d", self.myTouchSecond);
self.touchDate=now;
self.cal=cal;
}else{
self.timer=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:NO];
[self.timer setFireDate:[NSDate distantPast]];
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
iOS 实现倒计时
标签:
ios
nstimer
倒计时
原文地址:http://blog.csdn.net/darongzi1314/article/details/45197535
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
关闭苹果IOS app自动更新
2021-07-29
开发一个即时通讯App
2021-07-28
iOS 跳转App Store进行评分
2021-07-26
诺基亚短信生成!太好玩了
2021-07-26
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
2021-07-26
Android系统编程入门系列之界面Activity响应丝滑的传统动画
2021-07-26
uniapp h5,app两端复制文本
2021-07-22
uni-app滚动视图容器(scroll-view)之监听上拉事件
2021-07-21
新型横向移动工具原理分析、代码分析、优缺点以及检测方案
2021-07-19
Android系统编程入门系列之界面Activity交互响应
2021-07-19
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!