iOS-按鈕60s倒計時

__block int timeout=60; //倒計時時間

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);

    dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒執行

    dispatch_source_set_event_handler(self.timer, ^{

        if(timeout<=0){ //倒計時結束,關閉

            dispatch_source_cancel(self.timer);

            dispatch_async(dispatch_get_main_queue(), ^{

                //設置界面的按鈕顯示 根據自己需求設置

                [self.codeButton setTitle:@"獲取驗證碼" forState:UIControlStateNormal];

                self.codeButton.userInteractionEnabled = YES;

            });

        }else{

            //            int minutes = timeout / 60;

            int seconds = timeout % 61;

            NSString *strTime = [NSString stringWithFormat:@"%.2d", seconds];

            dispatch_async(dispatch_get_main_queue(), ^{

                //設置界面的按鈕顯示 根據自己需求設置

                NSLog(@"____%@",strTime);

                [self.codeButton setTitle:[NSString stringWithFormat:@"(%@)",strTime] forState:UIControlStateNormal];

                self.codeButton.userInteractionEnabled = NO;

                

            });

            timeout--;

            

        }

    });

    dispatch_resume(self.timer);

發佈了28 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章