`
jsntghf
  • 浏览: 2542501 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

使用GCD实现倒计时

    博客分类:
  • iOS
阅读更多
__block int timeout = 60;	// 倒计时时间
    
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t _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 <= 1) { // 倒计时结束
        dispatch_source_cancel(_timer);
        dispatch_async(dispatch_get_main_queue(), ^{
            getCodeButton.backgroundColor = RGBACOLOR(232, 154, 37, 1);
            getCodeButton.userInteractionEnabled = YES;
            [getCodeButton setTitle:@"获取验证码" forState:UIControlStateNormal];
            [getCodeButton setTitle:@"获取验证码" forState:UIControlStateHighlighted];
        });
    } else {
        dispatch_async(dispatch_get_main_queue(), ^{
            getCodeButton.backgroundColor = [UIColor lightGrayColor];
            getCodeButton.userInteractionEnabled = NO;
            [getCodeButton setTitle:[NSString stringWithFormat:@"%d", timeout] forState:UIControlStateNormal];
        });
            
        timeout--;
    }
});
    
dispatch_resume(_timer);

 

分享到:
评论

相关推荐

    GCD实现倒计时功能

    在实现倒计时功能时,我们通常使用串行队列,因为我们需要确保倒计时按照设定的时间顺序准确进行。以下是一个基本的GCD倒计时实现步骤: 1. **创建串行队列**: 首先,我们需要创建一个串行队列。这可以通过`...

    ios-两种方式实现倒计时.zip

    以下是一个使用GCD实现倒计时的例子: ```swift let queue = DispatchQueue(label: "countdownQueue", attributes: .global) var secondsRemaining = 60 func startCountdown() { queue.asyncAfter(deadline...

    ios 实现倒计时的两种方式

    使用GCD实现倒计时,主要用到了`dispatch_source_t`类型的计时器,通过设置定时器的执行间隔、事件处理函数等属性来完成倒计时功能。 具体实现步骤如下: 1. 使用`dispatch_source_create`创建一个类型为`DISPATCH...

    ios-验证码倒计时.zip

    要用GCD实现倒计时,通常需要创建一个dispatch_source_t类型的数据源,设置其事件类型为定时,并指定时间间隔。然后在事件触发时更新倒计时显示,直到达到预设的零值。在这个过程中,可以利用`dispatch_after`函数...

    iOS实现短信验证码倒计时

    使用GCD实现倒计时的步骤如下: 1. 定义一个block修饰的计时变量time,并设置其初始值为60秒。 2. 获取全局并发队列,创建一个计时器类型的dispatch_source_t对象,并设置其事件执行间隔为1秒。 3. 在dispatch_...

    iOS获取短信验证码倒计时的两种实现方法

    以下是如何使用GCD实现倒计时的步骤: 1. 首先,定义一个倒计时时间变量,例如`timeout = 60`,表示60秒的倒计时。 2. 创建一个全局队列`queue`,并创建一个GCD定时器`_timer`。 3. 使用`dispatch_source_set_timer...

    GCD实现倒计时(iPhone源代码)

    来源:github/GCDForTimeLicence:Custom作者:__西海岸  使用GCD机制来实现倒计时功能。Demo实现的是类似注册页面发送验证码的倒计时。 小编注:感谢开发者@__西海岸 。

    swift-DFCountDownButton继承UIButton实现IOS倒计时按钮

    开发者可以通过查看源代码学习其实现细节,也可以直接在自己的项目中引用这个库,快速实现倒计时按钮的功能。 总的来说,DFCountDownButton是一个实用的Swift组件,它简化了倒计时按钮的实现过程,提高了开发效率。...

    到计时器---可以手动输入一个时间,开始倒计时

    在iOS开发中,倒计时(Countdown Timer)是一种常见的功能,它被广泛应用于各种应用场景,比如考试倒计时、烹饪计时、闹钟等。本项目“到计时器”是一个用户可以自定义时间的倒计时工具,其核心在于能够接收用户输入...

    ios-一句话实现倒计时.zip

    我们将使用NSTimer来定期更新按钮上的显示文本,以实现倒计时效果。 3. **KVO(Key-Value Observing)**: 为了在倒计时过程中实时更新按钮的标题,我们可以利用KVO监听标题属性的变化。当倒计时时间改变时,自动...

    倒计时封装

    这是一个专门为iOS开发的倒计时框架,它提供了一种简洁的方式,允许开发者一行代码就能实现倒计时功能。通常,这样的库会包含一个或多个预定义的类,这些类包含了倒计时的逻辑,以及与界面交互的方法。 3. **使用...

    iOS 倒计时 时间转换

    在iOS中,可以使用`NSTimer`或者更现代的`DispatchSourceTimer`来实现倒计时功能。创建一个倒计时通常涉及设定一个结束时间,然后每隔一定时间间隔更新用户界面显示剩余时间。例如: ```swift let endTime = Date...

    ios-时分秒倒计时.zip

    2. **使用Swift实现倒计时** - **初始化时间**: 首先,你需要设定开始时间和结束时间,这两个时间通常用`NSDate`对象表示。你可以通过`NSDateFormatter`将字符串转换为`NSDate`。 - **计算时间差**: 使用`...

    swift-TimeLimitedView-倒计时的控件

    `Swift-TimeLimitedView-倒计时的控件`这个项目,正如其名,旨在提供一个简洁且高效的方法来实现倒计时功能,只需一行代码即可完成。这得益于Swift强大的面向对象编程特性以及可扩展性。 首先,我们需要理解Swift中...

    ios-tableview cell 倒计时.zip

    在"ios-tableview cell 倒计时.zip"这个压缩包中,包含了一个名为"CountDownTimerForTableView-master"的项目,这个项目很可能是演示如何在UITableView的Cell中实现倒计时功能。倒计时在很多应用中都有广泛的应用,...

    ios-倒计时封装.zip

    本资源“ios-倒计时封装.zip”提供了一种简洁的解决方案,旨在通过一句代码实现倒计时功能,这极大地简化了开发流程。在实际应用中,开发者往往需要编写复杂的定时器逻辑,而这个封装则将这些复杂性隐藏起来,让...

    ios-圆形进度条展示倒计时.zip

    倒计时功能则通常结合NSTimer或GCD(Grand Central Dispatch)来实现,以便在指定时间后触发相应的事件。 描述中提到“结合进度条封装的一款倒计时控件,可对计时开始,计时中及计时完成后做出相应事件的处理”。这...

    按钮倒计时

    为了实现倒计时效果,我们需要自定义UIButton的类,添加相关的属性(如剩余时间)和方法(如开始倒计时、暂停倒计时等)。同时,需要重写`setTitle:forState:`方法,根据剩余时间动态设置按钮的标题。 5. **UI界面...

    swift-好用的iOS倒计时按钮

    倒计时按钮的实现主要涉及到以下几个关键知识点: 1. **UIButton自定义**: - 在Swift中,我们可以创建自定义的UIButton子类,以扩展其功能。这通常涉及到重写`init`方法,设置初始属性,以及实现特定的行为。 - ...

Global site tag (gtag.js) - Google Analytics