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


相关推荐: java获取注册ip实例  在Oracle关闭情况下如何修改spfile的参数  网易LOFTER官网链接 老福特网页版登录地址  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  如何用狗爹虚拟主机快速搭建网站?  如何在 Pandas 中基于一列条件计算另一列的分组均值  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  如何用PHP快速搭建CMS系统?  javascript如何操作浏览器历史记录_怎样实现无刷新导航  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  进行网站优化必须要坚持的四大原则  如何在阿里云香港服务器快速搭建网站?  js代码实现下拉菜单【推荐】  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  EditPlus中的正则表达式实战(6)  🚀拖拽式CMS建站能否实现高效与个性化并存?  如何用腾讯建站主机快速创建免费网站?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  如何在新浪SAE免费搭建个人博客?  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  JavaScript数据类型有哪些_如何准确判断一个变量的类型  Laravel如何实现模型的全局作用域?(Global Scope示例)  JavaScript实现Fly Bird小游戏  php json中文编码为null的解决办法  如何用美橙互联一键搭建多站合一网站?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  微信公众帐号开发教程之图文消息全攻略  昵图网官方站入口 昵图网素材图库官网入口  如何快速搭建高效简练网站?  Linux系统命令中tree命令详解  如何用西部建站助手快速创建专业网站?  Linux安全能力提升路径_长期防护思维说明【指导】  ,南京靠谱的征婚网站?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  如何在万网ECS上快速搭建专属网站?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Java解压缩zip - 解压缩多个文件或文件夹实例  如何快速生成专业多端适配建站电话?  中国移动官方网站首页入口 中国移动官网网页登录  实现点击下箭头变上箭头来回切换的两种方法【推荐】  香港服务器如何优化才能显著提升网站加载速度?  Laravel PHP版本要求一览_Laravel各版本环境要求对照