小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=#pid27758php

相關文章
相關標籤/搜索