小demo - 显示倒计时Label

小demo - 显示倒计时Label

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

  • 下图为演示

声明文件

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

实现文件

 
  1. #import "BYCountdownLabel.h"
  2.  
  3. @interface BYCountdownLabel ()
  4.  
  5. /**时间定时器,用weak可以在定时器销毁之后指针自动置为nil*/
  6. @property (nonatomic, weak) NSTimer *timer;
  7. /**天数*/
  8. @property (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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值