@interface ViewController ()<UITextFieldDelegate>
@property (nonatomic,strong) UIButton *verificationButton
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad]
[self.view addSubview:self.verificationButton]
}
- (UIButton *)verificationButton {
if (!_verificationButton) {
_verificationButton = [[UIButton alloc] init]
_verificationButton.frame = CGRectMake(100, 100, 100, 30)
_verificationButton.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.1]
[_verificationButton setTitle:@"获取验证码" forState:UIControlStateNormal]
_verificationButton.titleLabel.font = [UIFont systemFontOfSize:14]
_verificationButton.layer.cornerRadius = 15
_verificationButton.layer.masksToBounds = YES
[_verificationButton setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal]
_verificationButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter
[_verificationButton addTarget:self action:@selector(validationClick:) forControlEvents:UIControlEventTouchUpInside]
}
return _verificationButton
}
- (void)validationClick:(UIButton *)sender {
__block NSInteger time = 59
dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0))
dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0 * NSEC_PER_SEC, 0)
__weak typeof (self) weakSelf = self
dispatch_source_set_event_handler(_timer, ^{
if(time <= 0){ //倒计时结束,关闭
dispatch_source_cancel(_timer)
dispatch_async(dispatch_get_main_queue(), ^{
//设置按钮的样式
[weakSelf.verificationButton setTitle:@"重新发送" forState:UIControlStateNormal]
weakSelf.verificationButton.userInteractionEnabled = YES
})
}else{
NSInteger seconds = time % 60
dispatch_async(dispatch_get_main_queue(), ^{
//设置按钮显示读秒效果
[weakSelf.verificationButton setTitle:[NSString stringWithFormat:@"重新发送(%.2ld)", (long)seconds] forState:UIControlStateNormal]
weakSelf.verificationButton.userInteractionEnabled = NO
})
time--
}
})
dispatch_resume(_timer)
}
@end
