温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

自定义计时器UIButton

发布时间:2020-07-10 05:46:39 来源:网络 阅读:294 作者:一念之间888 栏目:开发技术
  1. 创建PWTimerButton 继承与UIButton

  2. 添加成员方法和属性

  3. 头文件如下:

@interface PWTimerButton : UIButton

{

    NSInteger _timerInterval;

    NSTimer *_timer;

    NSString *_formatString;

}


- (void)setFormatString:(NSString *)formatString;


- (void)startTimer:(NSInteger)interval;


- (void)stopTimer;


4.源文件如下:

- (void)startTimer:(NSInteger)interval

{

    if (_timer) {

        [_timer invalidate];

        _timer = nil;

    }

    if (interval > 0) {

        _timerInterval = interval;

        self.enabled = NO;

        [self updateButtonState];

        

        _timer = [NSTimer scheduledTimerWithTimeInterval:1

                                                  target:self

                                                selector:@selector(timeOut:)

                                                userInfo:nil

                                                 repeats:YES];

    }

    

}


- (void)stopTimer

{

    if (_timer) {

        [_timer invalidate];

        _timer = nil;

        _timerInterval = 0;

    }

    [self updateButtonState];

}


- (void)timeOut:(NSTimer *)timer

{

    _timerInterval--;

    if (_timerInterval > 0) {

    }

    else {

        [self stopTimer];

    }

    [self updateButtonState];

}


- (void)setFormatString:(NSString *)formatString

{

    _formatString = formatString;

}


- (void)updateButtonState

{

    if (_timerInterval > 0) {

        [self setTitle:[NSString stringWithFormat:@"%d", _timerInterval] forState:UIControlStateDisabled];

    }

    else {

        [self setTitle:@"验证" forState:UIControlStateNormal];

        self.enabled = YES;

    }

}

标记***的为重点知识,设置按钮的什么状态就要再什么状态下更改按钮的文字,颜色或者背景图片等。

调了n长时间终于调试出来了,哎,自己粗心大意了。。。



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI