日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[iOS] 封装倒计时(一句话调用,无内存泄漏)

發布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [iOS] 封装倒计时(一句话调用,无内存泄漏) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/**倒計時@param timeNum 倒計時時長@param endTitle 倒計時結束后的文本@param countingTitleColor 倒計時中的title顏色@param endTitleColor 倒計時結束后的title顏色@param countingBgColor 倒計時中的背景顏色@param endBgColor 倒計時結束后的背景顏色注:最初的文字顏色和文字需要在添加控件的Container里設定*/ - (void)startCountDownTime:(NSInteger)timeNum endTitle:(NSString *)endTitle countingTitleColor:(NSString *)countingTitleColor endTitleColor:(NSString *)endTitleColor countingBgColor:(NSString *)countingBgColor endBgColor:(NSString *)endBgColor;復制代碼#pragma mark - *************** 倒計時- (void)startCountDownTime:(NSInteger)timeNum endTitle:(NSString *)endTitle countingTitleColor:(NSString *)countingTitleColor endTitleColor:(NSString *)endTitleColor countingBgColor:(NSString *)countingBgColor endBgColor:(NSString *)endBgColor {//倒計時時間__block NSInteger timeOut = timeNum;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_walltime(NULL, 0), 1.0 * NSEC_PER_SEC, 0);dispatch_source_set_event_handler(_timer, ^{//倒計時結束,關閉if (timeOut <= 0) {dispatch_source_cancel(_timer);dispatch_async(dispatch_get_main_queue(), ^{self.layer.backgroundColor = [UIColor colorWithHex:endBgColor].CGColor;[self setTitle:endTitle forState:UIControlStateNormal];[self setTitleColor:[UIColor colorWithHex:endTitleColor] forState:UIControlStateNormal];self.userInteractionEnabled = YES;});} else {//倒計時中dispatch_async(dispatch_get_main_queue(), ^{self.layer.backgroundColor = [UIColor colorWithHex:countingBgColor].CGColor;[self setTitle:[NSString stringWithFormat:@"%lds重發", timeOut] forState:UIControlStateNormal];[self setTitleColor:[UIColor colorWithHex:countingTitleColor] forState:UIControlStateNormal];self.userInteractionEnabled = NO;});timeOut--;}});dispatch_resume(_timer); } 復制代碼

調用:

[self.btn startCountDownTime:10 endTitle:@"重新發送" countingTitleColor:@"e0e0e0" endTitleColor:@"ff0025" countingBgColor:@"ffffff" endBgColor:@"ddb86b"]; 復制代碼

總結

以上是生活随笔為你收集整理的[iOS] 封装倒计时(一句话调用,无内存泄漏)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。