@property (nonatomic, strong) NSTimer *timer;
@property (nonatomic, assign) NSInteger seconds;
- (void)countDown{
[self.timer fire];
}
- (NSTimer *)timer{
if (!_timer) {
_timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(countDown) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];
}
return _timer;
}
- (void)countDown{
NSLog(@"countDown");
if (self.seconds == 0) {
self.text = LS(@"3");
}else if (self.seconds == 1){
self.text = LS(@"2");
}
else if (self.seconds == 2){
self.text = LS(@"1");
}
if (self.seconds == 3) {
self.alpha = 0;
[self.timer invalidate];
self.timer = nil;
return;
}
self.seconds ++;
}
- (void)dealloc{
[self.timer invalidate];
self.timer = nil;
}
__block NSInteger timeOut = 3;
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
dispatch_source_set_event_handler(timer, ^{
if (timeOut <= 0) {
dispatch_cancel(timer);
dispatch_async(dispatch_get_main_queue(), ^{
self.alpha = 0;
});
}else{
dispatch_async(dispatch_get_main_queue(), ^{
self.text = [NSString stringWithFormat:@"%ld",(long)timeOut];
timeOut --;
});
}
});
dispatch_resume(timer);
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。