iOS之用NSTimer定时刷新按钮的文字,避免按钮闪烁的办法
来源:互联网 发布:淘宝店铺折扣价设置 编辑:程序博客网 时间:2024/05/18 02:23
今天做一个功能,一开始将某按钮置灰,然后倒计时60秒。每秒钟都刷新按钮的文字,倒计时结束后,使按钮可用。很快就做好了,不过发现一个问题,就是按钮会闪烁,跟星星似的。我的代码是:
_countDown = 60; UIColor *color = self.canSend ? [UIColor colorWithRed:40.0/255.0 green:90.0/255.0f blue:190.0/255.0f alpha:1.0f] : [UIColor grayColor]; self.smsButton = [UIButton createButtonWithStyle:UIButtonTypeRoundedRect withFrame:CGRectMake(80, 0, 100, 30) withTitle:NSLocalizedString(@"重发验证码", nil) withTitleColor:color withBackgroudColor:nil withNormalImage:nil withHighlightedImage:nil withNormalBackgroudImage:nil withHighlightedBackgroundImage:nil withTarge:self withAction:@selector(startTimer:) actionHandle:^(UIButton *sender) { }];
- (void)startTimer { [self.smsButton setEnabled:NO]; _timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];}- (void)onTimer { if (_countDown > 0) { [self.smsButton setTitle:[NSString stringWithFormat:@"%d秒重新获取", _countDown] forState:UIControlStateDisabled]; _countDown--; } else { _countDown = 60; [_timer invalidate]; _timer = nil; [self.smsButton setTitle:@"60秒重新获取" forState:UIControlStateDisabled]; [self.smsButton setTitle:@"重发验证码" forState:UIControlStateNormal]; [self.smsButton setEnabled:YES]; }}
解决方法:
将UIButton的类型由system改为custom就OK
1 0
- iOS之用NSTimer定时刷新按钮的文字,避免按钮闪烁的办法
- 用NSTimer定时刷新按钮的文字,避免按钮闪烁的办法
- iOS定时刷新按钮的文字,避免按钮闪烁的办法
- iOS使用GCD或NSTimer定时刷新按钮的文字,按钮文字闪烁的问题
- iOS 按钮闪烁问题的处理
- 消除按钮上的文字闪烁的效果
- iOS 带下划线的文字按钮
- 按钮刷新的方法
- 双缓冲避免刷新时的闪烁
- 避免连续点击的按钮
- 避免连续点击的按钮
- ios程序避免用户同时点击两个按钮的方法
- 用文字作出按钮的效果
- 设置按钮的文字颜色用setTitleColor
- 用按钮来实现背景色的闪烁
- MFC 托盘按钮和闪烁的制作
- 动态闪烁按钮ShineButton的用法
- IOS开发之UIButton同时设置图片文字以及出发按钮时文字图片的切换
- 【阅读摘要】第6章 电子元器件与组件的热设计
- ios学习-oc类目
- UITableView常用UI细节改动方法
- 文本编辑器收集
- Web应用该在哪种云服务上运行?
- iOS之用NSTimer定时刷新按钮的文字,避免按钮闪烁的办法
- 简单的Android笔记sharePreferences和Editor
- UVa12097 - Pie
- Qt5基本对话框
- 文件下载实例
- TOOLBAR和沉浸式状态栏入门
- Ubuntu中crosstool-ng编译出错:[ERROR] gtype-desc.c:8829:18: error: subscripted value is neither array nor
- JavaScript 闭包详解
- java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法