iOS中实现简单易懂秒杀倒计时/倒计时代码

发布时间 - 2026-01-10 23:00:34    点击率:

示例代码简单易懂:

#import
<uikit uikit.h="">
@interface
ViewController : UIViewController
@property
(weak, nonatomic) IBOutlet UILabel *dayLabel;
@property
(weak, nonatomic) IBOutlet UILabel *hourLabel;
@property
(weak, nonatomic) IBOutlet UILabel *minuteLabel;
@property
(weak, nonatomic) IBOutlet UILabel *secondLabel;
@end</uikit>
#import
"ViewController.h"
@interface
ViewController ()
{
  dispatch_source_t
 _timer;
}
@end
@implementation
ViewController
/**
 * 
 获取当天的年月日的字符串
 * 
 这里测试用
 * 
 @return 格式为年-月-日
 */
-(NSString
 *)getyyyymmdd{
 NSDate
 *now = [NSDate date];
 NSDateFormatter
 *formatDay = [[NSDateFormatter alloc] init];
 formatDay.dateFormat
 = @"yyyy-MM-dd";
 NSString
 *dayStr = [formatDay stringFromDate:now];
 return
dayStr;
}
-
 (void)viewDidLoad
 {
 [super
viewDidLoad];
 NSDateFormatter
 *dateFormatter=[[NSDateFormatter alloc] init];
 [dateFormatter
 setDateFormat:@"yyyy-MM-dd"];
 NSDate
 *endDate = [dateFormatter dateFromString:[self getyyyymmdd]];
 NSDate
 *endDate_tomorrow = [[NSDate alloc] initWithTimeIntervalSinceReferenceDate:([endDate timeIntervalSinceReferenceDate] +
24*3600)];
 NSDate
 *startDate = [NSDate date];
 NSTimeInterval
 timeInterval =[endDate_tomorrow timeIntervalSinceDate:startDate];
 if
(_timer==nil) {
  __block
int
timeout = timeInterval; //倒计时时间
  if
(timeout!=0)
 {
   dispatch_queue_t
 queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
   _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);
     _timer
 = nil;
     dispatch_async(dispatch_get_main_queue(),
 ^{
      self.dayLabel.text
 = @"";
      self.hourLabel.text
 = @"00";
      self.minuteLabel.text
 = @"00";
      self.secondLabel.text
 = @"00";
     });
    }else{
     int
days = (int)(timeout/(3600*24));
     if
(days==0)
 {
      self.dayLabel.text
 = @"";
     }
     int
hours = (int)((timeout-days*24*3600)/3600);
     int
minute = (int)(timeout-days*24*3600-hours*3600)/60;
     int
second = timeout-days*24*3600-hours*3600-minute*60;
     dispatch_async(dispatch_get_main_queue(),
 ^{
      if
(days==0)
 {
       self.dayLabel.text
 = @"0天";
      }else{
       self.dayLabel.text
 = [NSString stringWithFormat:@"%d天",days];
      }
      if
(hours<10)
 {
       self.hourLabel.text
 = [NSString stringWithFormat:@"0%d",hours];
      }else{
       self.hourLabel.text
 = [NSString stringWithFormat:@"%d",hours];
      }
      if
(minute<10)
 {
       self.minuteLabel.text
 = [NSString stringWithFormat:@"0%d",minute];
      }else{
       self.minuteLabel.text
 = [NSString stringWithFormat:@"%d",minute];
      }
      if
(second<10)
 {
       self.secondLabel.text
 = [NSString stringWithFormat:@"0%d",second];
      }else{
       self.secondLabel.text
 = [NSString stringWithFormat:@"%d",second];
      }
     });
     timeout--;
    }
   });
   dispatch_resume(_timer);
  }
 }
}
<span
 style="font-family:
 Arial, Verdana, sans-serif;">效果:</span>

以上所述是小编给大家介绍的iOS中实现简单易懂秒杀倒计时/倒计时代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# ios秒杀倒计时代码  # ios  # 秒杀倒计时  # IOS开发代码分享之用nstimer实现倒计时功能  # IOS实现验证码倒计时功能(一)  # IOS关于大型网站抢购、距活动结束  # 剩余时间倒计时的实现代码  # ios 实现倒计时的两种方式  # iOS中让多个cell上都出现倒计时的分析与实现  # iOS实现毫秒倒计时的方法详解  # iOS获取短信验证码倒计时的两种实现方法  # iOS启动页倒计时跳过按钮功能  # Swift实现iOS应用中短信验证码倒计时功能的实例分享  # iOS实现秒杀活动倒计时  # 倒计时  # 小编  # 在此  # 给大家  # 所述  # 给我留言  # 感谢大家  # 格式为  # 疑问请  # 有任何  # 当天  # 秒杀  # NSDate  # getyyyymmdd  # date  # NSDateFormatter  # _timer  # dispatch_source_t  # implementation  # NSString 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速搭建虚拟主机网站?新手必看指南  如何在建站之星网店版论坛获取技术支持?  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  如何快速查询网址的建站时间与历史轨迹?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  java中使用zxing批量生成二维码立牌  如何在新浪SAE免费搭建个人博客?  EditPlus中的正则表达式实战(6)  怎么用AI帮你为初创公司进行市场定位分析?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  浅析上传头像示例及其注意事项  JavaScript模板引擎Template.js使用详解  Laravel如何记录自定义日志?(Log频道配置)  Laravel如何处理CORS跨域请求?(配置示例)  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  如何用花生壳三步快速搭建专属网站?  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  Android使用GridView实现日历的简单功能  桂林网站制作公司有哪些,桂林马拉松怎么报名?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  如何在阿里云服务器自主搭建网站?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Java垃圾回收器的方法和原理总结  如何快速选择适合个人网站的云服务器配置?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  如何登录建站主机?访问步骤全解析  如何在橙子建站上传落地页?操作指南详解  香港服务器租用费用高吗?如何避免常见误区?  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  如何在Windows环境下新建FTP站点并设置权限?  如何确认建站备案号应放置的具体位置?  油猴 教程,油猴搜脚本为什么会网页无法显示?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  Laravel如何实现事件和监听器?(Event & Listener实战)  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  昵图网官网入口 昵图网素材平台官方入口  如何快速完成中国万网建站详细流程?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  如何挑选优质建站一级代理提升网站排名?  长沙做网站要多少钱,长沙国安网络怎么样?  Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧  LinuxCD持续部署教程_自动发布与回滚机制  教学论文网站制作软件有哪些,写论文用什么软件 ?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  JavaScript中的标签模板是什么_它如何扩展字符串功能  百度浏览器如何管理插件 百度浏览器插件管理方法