zoukankan      html  css  js  c++  java
  • 验证码计时 -- UIButton setTitle 闪烁问题解决方案

    首先,有各种版本

    方法一:

    我运用的一种极其简单的版本:  将UIButton的Type 设成 Custom 就不会有闪烁的问题重现

    @property (strong, nonatomic) IBOutlet UIButton *getCodeBtn;

    @property (nonatomic, strong) NSTimer *timerCode; //验证码定时器

     

    __block  int leftTime;

     

    - (void)dealloc {

        if ([_timerCode isValid]) {

            [_timerCode invalidate];

            _timerCode = nil;

        }

        

    }

     

    #pragma mark - 验证码

    //重新发送验证码

    - (IBAction)resendCodeBtnPressed:(UIButton *)sender {

        //判断哪一个网络请求发送验证码

        //...

        sender.enabled = NO;

        leftTime = 60;

        [self startOneTimer];

        //发送验证码请求

        [self.viewModel requestWithSendCode:[kUSERDEFAULT objectForKey:_isResetPassword? kForgetMobile:kLoginMobile] block:^(BOOL flag) {

         }];

     

    }

     

    /**

     *  发送验证码之后等待若干时间

     */

    - (void)startOneTimer {

        _getCodeBtn.enabled = NO;

        leftTime = 60;

        _timerCode = [NSTimer  scheduledTimerWithTimeInterval:1 block:^{

            if (leftTime == 0) {

                _getCodeBtn.enabled = YES;

                [_getCodeBtn setTitle:@"重新发送" forState:UIControlStateNormal];

                [_getCodeBtn setTitleColor:fcc639 forState:UIControlStateNormal];

                //计时完成,销毁定时器

                [_timerCode invalidate];

                _timerCode = nil;

                leftTime = 60;

                return ;

            }

            leftTime--;

            [_getCodeBtn setTitle:[NSString stringWithFormat:@"%i秒后重发", leftTime] forState:UIControlStateNormal];

            [_getCodeBtn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];

        } repeats:YES];

    }

     

     

     

    方法二: 就是在UIButton上罩一个同样大小的UILabel,然后每次刷新UILabel的文字,不刷新按钮,效果不错,不再闪烁了

    链接 :http://blog.csdn.net/kyfxbl/article/details/17619221

     

     

    方法三:https://www.cnblogs.com/manji/p/4813520.html

     

     

    补充: 我的方法中运用了 防止timer没有被销毁掉的timerBlocks 请自行查找

    //  NSTimer+Blocks.h

    //

    //  Created by Jiva DeVoe on 1/14/11.

    //  Copyright 2011 Random Ideas, LLC. All rights reserved.

  • 相关阅读:
    CentOS7搭建FastDFS V5.11分布式文件系统(二)
    CentOS7搭建FastDFS V5.11分布式文件系统(一)
    JRebel最新破解激活版(IDEA自动部署插件)
    idea常用插件
    idea安装完成后要做的几件事(设置字体、编码、行号)
    IDEA修改Maven全局配置
    IDEA打开光标是粗黑色,backspace键、insert键点击无效的解决办法
    Hadoop build error java.lang.NoClassDefFoundError: org/sonatype/aether/graph/DependencyFilter
    Golang项目目录结构组织
    再看GOPATH
  • 原文地址:https://www.cnblogs.com/Jenaral/p/6269007.html
Copyright © 2011-2022 走看看