博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小demo - 显示倒计时Label
阅读量:6688 次
发布时间:2019-06-25

本文共 1984 字,大约阅读时间需要 6 分钟。

hot3.png

小demo - 显示倒计时Label

简单的倒计时Label封装,最高显示到天数,年月未设置,用的太少.

  • 下图为演示

声明文件

 
  1. #import <UIKit/UIKit.h>
  2.  
  3. BYCountdownLabel : UILabel
  4.  
  5. /**根据目标时间计算跟服务器的差值*/
  6. - (void)setupCountDownWithTargetTime:(NSDate *)targetTime;
  7.  

实现文件

 
  1. #import "BYCountdownLabel.h"
  2.  
  3. BYCountdownLabel ()
  4.  
  5. /**时间定时器,用weak可以在定时器销毁之后指针自动置为nil*/
  6. (nonatomic, weak) NSTimer *timer;
  7. /**天数*/
  8. (nonatomic, assign) NSUInteger day;
  9. /**小时数*/
  10. @property (nonatomic, assign) NSUInteger hour;
  11. /**分钟数*/
  12. @property (nonatomic, assign) NSUInteger minute;
  13. /**秒数*/
  14. @property (nonatomic, assign) NSUInteger second;
  15.  
  16. @end
  17. @implementation BYCountdownLabel
  18.  
  19. - (void)setupCountDownWithTargetTime:(NSDate *)targetTime {
  20.  
  21. // 计算目标时间和当前服务器时间的时间差
  22. NSTimeInterval interval = [targetTime timeIntervalSinceDate:[NSDate date]];
  23. // 根据时间差的秒数计算天,小时,分钟,秒(暂时不考虑月和年,月和年的倒计时用的很少)
  24. [self calculateTime:(NSInteger)interval];
  25.  
  26. }
  27.  
  28. /**计算时间方法*/
  29. - (void)calculateTime:(NSInteger)interval {
  30.  
  31. // 天
  32. self.day = interval/86400; // 一天 == 86400 == 24*60*60秒
  33. // 小时
  34. self.hour = interval%86400/3600;
  35. // 分钟
  36. self.minute = interval%3600/60;
  37. // 秒
  38. self.second = interval%60;
  39. // 赋值到label上
  40. self.text = [NSString stringWithFormat:@"%02zd天%02zd:%02zd:%02zd",
  41. self.day, self.hour, self.minute, self.second];
  42. // 一秒钟后调用减一秒方法
  43. self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeDecrease) userInfo:nil repeats:YES];
  44.  
  45. }
  46.  
  47. /**时间减一秒方法*/
  48. - (void)timeDecrease {
  49.  
  50. // 减一秒
  51. self.second--;
  52. // 判断秒数
  53. if (self.second == -1) {
  54. self.second = 59;
  55. // 分钟减一
  56. self.minute--;
  57. }
  58. // 判断分钟数
  59. if (self.minute == -1) {
  60. self.minute = 59;
  61. // 小时减1
  62. self.hour--;
  63. }
  64. // 判断小时数
  65. if (self.hour == -1) {
  66. self.hour = 23;
  67. // 天数减1
  68. self.day--;
  69. }
  70. // 判断是否没时间了
  71. if (self.day == 0 &&
  72. self.hour == 0 &&
  73. self.minute == 0 &&
  74. self.second == 0) {
  75. [self.timer invalidate];
  76. }
  77. // 赋值
  78. self.text = [NSString stringWithFormat:@"%02zd天%02zd:%02zd:%02zd",
  79. self.day, self.hour, self.minute, self.second];
  80.  
  81. }
  82.  
  83. @end

 

 

原文:http://bbs.520it.com/forum.php?mod=viewthread&tid=2591&pid=27758&page=1&extra=#pid27758

转载于:https://my.oschina.net/u/2345393/blog/775289

你可能感兴趣的文章
AMD、CMD/AMD与CMD的区别
查看>>
Python~第一天
查看>>
Linux管理用户账号
查看>>
redis中使用lua脚本
查看>>
颜色数组
查看>>
ELASTICSEARCH清理过期数据
查看>>
oo第三次博客作业
查看>>
人工智能简介
查看>>
PAT (Advanced Level) 1075. PAT Judge (25)
查看>>
08. Web大前端时代之:HTML5+CSS3入门系列~H5 Web存储
查看>>
MongoDB复制
查看>>
jdk1.8-LinkedList源码分析
查看>>
【转】Linux世界驰骋——文件系统和设备管理
查看>>
Arcgis 抽稀矢量数据
查看>>
BZOJ 3524主席树裸题 (雾)
查看>>
IO多路复用
查看>>
爬取抽屉热搜榜文章
查看>>
MySQL 之【视图】【触发器】【存储过程】【函数】【事物】【数据库锁】【数据库备份】...
查看>>
杭电ACM--2008数值统计
查看>>
面向对象复习
查看>>