Initial commit

This commit is contained in:
lianxiang
2018-08-22 11:15:52 +08:00
parent d98e20881f
commit 249bf6864e
491 changed files with 68665 additions and 7 deletions
+30
View File
@@ -0,0 +1,30 @@
//
// LXCountTimer.h
// Elastagen
//
// Created by lianxiang on 2018/8/12.
// Copyright © 2018年 jijia. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface LXCountTimer : NSObject
/**
* 用时间戳倒计时
* starTimeStamp 开始的时间戳
* finishTimeStamp 结束的时间戳
*/
-(void)countDownWithStratTimeStamp:(long)starTimeStamp finishTimeStamp:(long)finishTimeStamp completeBlock:(void (^)(NSInteger day,NSInteger hour,NSInteger minute,NSInteger second))completeBlock;
/**
* 每秒走一次,回调block
*/
-(void)countDownWithPER_SECBlock:(void (^)(void))PER_SECBlock;
/**
* 销毁倒计时
*/
-(void)destoryTimer;
@end
+93
View File
@@ -0,0 +1,93 @@
//
// LXCountTimer.m
// Elastagen
//
// Created by lianxiang on 2018/8/12.
// Copyright © 2018年 jijia. All rights reserved.
//
#import "LXCountTimer.h"
@interface LXCountTimer()
@property(nonatomic,retain) dispatch_source_t timer;
@property(nonatomic,retain) NSDateFormatter *dateFormatter;
@end
@implementation LXCountTimer
-(void)countDownWithStratTimeStamp:(long)starTimeStamp finishTimeStamp:(long)finishTimeStamp completeBlock:(void (^)(NSInteger, NSInteger, NSInteger, NSInteger))completeBlock{
if (_timer == nil) {
NSDate *finishDate =[self dateWithLong:finishTimeStamp];
NSDate *startDate = [self dateWithLong:starTimeStamp];
NSTimeInterval timerInterval =[finishDate timeIntervalSinceDate:startDate];
__block int timeout = timerInterval;
if (timeout !=0) {
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
dispatch_source_set_timer(_timer, dispatch_walltime(NULL, 0), 1.0*NSEC_PER_SEC, 0);//每秒执行
dispatch_source_set_event_handler(_timer, ^{
if (timeout<=0) {
//记时结束, 关闭
dispatch_source_cancel(self->_timer);
self->_timer = nil;
dispatch_async(dispatch_get_main_queue(), ^{
completeBlock(0,0,0,0);
});
}else{
int days = (int)(timeout/(3600*24));
int hours = (int)((timeout-days*24*3600)/3600);
int minute = (int)(timeout-days*24*3600-hours*3600)/60;
int second = timeout-days*24*3600-hours*3600-minute*60;
dispatch_async(dispatch_get_main_queue(), ^{
completeBlock(days,hours,minute,second);
});
timeout--;
}
});
dispatch_resume(_timer);
}
}
}
-(void)countDownWithPER_SECBlock:(void (^)(void))PER_SECBlock{
if (_timer==nil) {
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
dispatch_source_set_event_handler(_timer, ^{
dispatch_async(dispatch_get_main_queue(), ^{
PER_SECBlock();
});
});
dispatch_resume(_timer);
}
}
-(void)destoryTimer{
if (_timer) {
dispatch_source_cancel(_timer);
_timer = nil;
}
}
-(void)dealloc{
NSLog(@"%s dealloc",object_getClassName(self));
}
-(NSDate *)dateWithLong:(long)longValue{
long value = longValue;
NSNumber *time = [NSNumber numberWithLong:value];
//转换成NSTimeInterval
NSTimeInterval nsTimeInterval = [time longValue];
NSDate *date = [[NSDate alloc] initWithTimeIntervalSince1970:nsTimeInterval];
return date;
}
@end