IOS开发代码分享之用nstimer实现倒计时功能

用nstimer实现倒计时功能,废话不多说,直接上代码,详细解释请参照注释

//
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];
 
//
- (void)timerFireMethod:(NSTimer *)theTimer
{
    BOOL timeStart = YES;
    NSCalendar *cal = [NSCalendar currentCalendar];//定义一个NSCalendar对象
    NSDateComponents *endTime = [[NSDateComponents alloc] init];    //初始化目标时间...
    NSDate *today = [NSDate date];    //得到当前时间
     
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSDate *dateString = [dateFormatter dateFromString:todate];
    NSString *overdate = [dateFormatter stringFromDate:dateString];
//    NSLog(@"overdate=%@",overdate);
    static int year;
    static int month;
    static int day;
    static int hour;
    static int minute;
    static int second;
    if(timeStart) {//从NSDate中取出年月日,时分秒,但是只能取一次
        year = [[overdate substringWithRange:NSMakeRange(0, 4)] intValue];
        month = [[overdate substringWithRange:NSMakeRange(5, 2)] intValue];
        day = [[overdate substringWithRange:NSMakeRange(8, 2)] intValue];
        hour = [[overdate substringWithRange:NSMakeRange(11, 2)] intValue];
        minute = [[overdate substringWithRange:NSMakeRange(14, 2)] intValue];
        second = [[overdate substringWithRange:NSMakeRange(17, 2)] intValue];
        timeStart= NO;
    }
     
    [endTime setYear:year];
    [endTime setMonth:month];
    [endTime setDay:day];
    [endTime setHour:hour];
    [endTime setMinute:minute];
    [endTime setSecond:second];
    NSDate *overTime = [cal dateFromComponents:endTime]; //把目标时间装载入date
    //用来得到具体的时差,是为了统一成北京时间
    unsigned int unitFlags = NSYearCalendarUnit| NSMonthCalendarUnit| NSDayCalendarUnit| NSHourCalendarUnit| NSMinuteCalendarUnit| NSSecondCalendarUnit;
    NSDateComponents *d = [cal components:unitFlags fromDate:today toDate:overTime options:0];
    NSString *t = [NSString stringWithFormat:@"%d", [d day]];
    NSString *h = [NSString stringWithFormat:@"%d", [d hour]];
    NSString *fen = [NSString stringWithFormat:@"%d", [d minute]];
    if([d minute] < 10) {
        fen = [NSString stringWithFormat:@"0%d",[d minute]];
    }
    NSString *miao = [NSString stringWithFormat:@"%d", [d second]];
    if([d second] < 10) {
        miao = [NSString stringWithFormat:@"0%d",[d second]];
    }
//    NSLog(@"===%@天 %@:%@:%@",t,h,fen,miao);
    [_longtime setText:[NSString stringWithFormat:@"%@天 %@:%@:%@",t,h,fen,miao]];
    if([d second] > 0) {
        //计时尚未结束,do_something
//        [_longtime setText:[NSString stringWithFormat:@"%@:%@:%@",d,fen,miao]];
    } else if([d second] == 0) {
        //计时结束 do_something
         
    } else{
//计时器失效
        [theTimer invalidate];
    }
     
}
(0)

相关推荐

  • IOS 中NSTimer定时器的使用

    IOS 中NSTimer定时器的使用 NSTimery 定时器,主要用于进行定时执行指定方法,常用场景如:获取验证码的按钮倒计时:图片轮播定时. 1 使用注意事项: 1.1 倒计时时间间隔(时间单位是秒) 1.2 指定的执行方法 1.3 实现指定执行方法的对象 1.4 是否重复执行 2 对象的内存管理及销毁 2.1 使用方法" invalidate "进行停止 2.2 将对象设置为" nil " 2.3 特别是在返回到其他视图控制器的时候,要在方法" -

  • iOS中的NSTimer定时器的初步使用解析

    创建一个定时器(NSTimer) - (void)viewDidLoad { [super viewDidLoad]; [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(actionTimer:) userInfo:nil repeats:YES]; } - (void)actionTimer:(NSTimer *)timer { } NSTimer默认运行在default mode下,default

  • iOS NSTimer循环引用的几种解决办法

    发生场景 在 Controller B 中有一个 NSTimer @property (strong, nonatomic) NSTimer *timer; 你创建了它,并挂载到 main runloop self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction:) userInfo:nil repeats:true]; 然后退出 Controller B 的

  • IOS开发代码分享之用nstimer实现倒计时功能

    用nstimer实现倒计时功能,废话不多说,直接上代码,详细解释请参照注释 // [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];   // - (void)timerFireMethod:(NSTimer *)theTimer {     BOOL timeStart = YES;     NSCalend

  • IOS开发代码分享之获取启动画面图片的string

    本代码支持 iPhone 6 以下. 支持 iPhone 及 iPad +(NSString*)getLaunchImageName {           NSArray* images= @[@"LaunchImage.png", @"LaunchImage@2x.png",@"LaunchImage-700@2x.png",@"LaunchImage-568h@2x.png",@"LaunchImage-700

  • IOS开发代码分享之设置UISearchBar的背景颜色

    今天用到UISearchBar,之前网上提供的方法已经不能有效的去除掉它的背景色了,修改背景色方法如下: mySearchBar.backgroundColor = RGBACOLOR(249,249,249,1);     mySearchBar.backgroundImage = [self imageWithColor:[UIColor clearColor] size:mySearchBar.bounds.size];   //取消searchbar背景色 - (UIImage *)im

  • BootStrap轻松实现微信页面开发代码分享

    1.  行长度: <div class="col-md-12"> </div> 2.modal <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <

  • iOS开发中文件的上传和下载功能的基本实现

    文件的上传 说明:文件上传使用的时POST请求,通常把要上传的数据保存在请求体中.本文介绍如何不借助第三方框架实现iOS开发中得文件上传. 由于过程较为复杂,因此本文只贴出部分关键代码. 主控制器的关键代码: 复制代码 代码如下: YYViewController.m #import "YYViewController.h" #define YYEncode(str) [str dataUsingEncoding:NSUTF8StringEncoding] @interface YYV

  • IOS开发相册图片多选和删除的功能

    照例先上效果图 本次用的第三方框架做这个,但是需要考虑的地方也比较多,怎么把拍照和相册选取结合.删除照片后添加新照片时候的相册状态等等,所有的改变都是在操作数组.还需考虑图片的压缩上传. 本次用的第三方框架为:QBImagePickerController 按照惯例,上代码,本次代码较多 第一个控制器 .h里没啥代码 #import "RRZShowEditViewController.h" #import "RRZSendShowTextCell.h" #impo

  • 详解iOS开发中UItableview控件的数据刷新功能的实现

    实现UItableview控件数据刷新 一.项目文件结构和plist文件 二.实现效果 1.说明:这是一个英雄展示界面,点击选中行,可以修改改行英雄的名称(完成数据刷新的操作). 运行界面: 点击选中行: 修改数据后自动刷新: 三.代码示例 数据模型部分: YYheros.h文件 复制代码 代码如下: // //  YYheros.h //  10-英雄展示(数据刷新) // //  Created by apple on 14-5-29. //  Copyright (c) 2014年 itc

  • iOS开发教程之识别图片中二维码功能的实现

    前言 大家应该都知道在iOS的CoreImage的Api中,有一个CIDetector的类,Detector的中文翻译有探测器的意思,那么CIDetector是用来做哪些的呢? 它可以: CIDetectorTypeFace 面部识别 CIDetectorTypeText 文本识别 CIDetectorTypeQRCode 条码识别 CIDetectorTypeRectangle 矩形识别 这个类其实很简单,它的头文件代码很少,下面来看一下注释 open class CIDetector : N

  • iOS开发笔记之键盘、静态库、动画和Crash定位

    前言 本文主要分享了开发中遇到的问题,和相关的一些思考.分享出来给有需要的朋友们参考学习,下面话不多说了,来一起看看详细的介绍吧. iOS11键盘问题 功能背景: 弹出键盘时,如果有输入框的话,需要输入框的位置跟随键盘大小而变动. 问题描述: 当快速切换键盘之后,容易出现输入框的位置没有紧贴键盘,如下:(以简书键盘为例) 相关实现: 输入框监听系统的UIKeyboardWillShowNotification和UIKeyboardWillHideNotification事件,在回调的过程中用UI

  • iOS高仿微信表情输入功能代码分享

    最近项目需求,要实现一个类似微信的的表情输入,于是把微信的表情扒拉出来,实现了一把.可以从这里下载源码.看起来表情输入没有多少东西,不外乎就是用NSTextAttachment来实现图文混排,结果在实现的过程中遇到了很多小问题,接下来会一一介绍遇到过的坑.先上一张效果图: 一.实现表情选择View(WKExpressionView) 具体的实现就不细说了,主要功能就是点击表情时,将对应表情的图片名称通知给delegate. 二.实现表情textView(WKExpressionTextView)

随机推荐