博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UIButton基本状态及各种叠加状态详解
阅读量:7143 次
发布时间:2019-06-29

本文共 2019 字,大约阅读时间需要 6 分钟。

带你深入理解UIButton的Normal状态,为什么有时候点击按钮时,本来应该显示为高亮的按钮却变成了Normal状态?


一、按钮的状态

1.UIControlStateHighlighted

1> 【当按住按钮不松开】或者用代码【button.highlighted = YES】时就能达到这种状态 2> 这种状态下的按钮【可以】接收点击事件,显示为【highlighted】状态下的文字颜色和图片复制代码

2.UIControlStateDisabled

1> 【button.enabled = NO】时就能达到这种状态 2> 这种状态下的按钮【无法】接收点击事件,显示为【Disabled】状态下的文字颜色和图片复制代码

3.UIControlStateSelected

1> 【button.selected = YES】时就能达到这种状态 2> 这种状态下的按钮【可以】接收点击事件,显示为【selected】状态下的文字颜色和图片复制代码

4.UIControlStateNormal

1> 除开UIControlStateHighlighted、UIControlStateDisabled、UIControlStateSelected以外的其他情况,都是normal状态,包括以上几种状态的叠加状态都会【显示】为normal状态下的文字颜色和图片   2> 这种状态下的按钮【可以】接收点击事件,但是如果是由【button.enabled = NO】状态和其它状态叠加则不可点击复制代码

二、让按钮无法点击的2种方法

1> button.enabled = NO; *【会】进入UIControlStateDisabled状态,显示的图片,文字颜色改变

2> button.userInteractionEnabled = NO; *【不会】进入UIControlStateDisabled状态,继续保持当前状态


比如以下代码,

  • 运行后为Normal状态的红色按钮,
  • 点击屏幕让按钮进入【selected】状态,显示为蓝色,
  • 再点击按钮本身不松开,按钮会再进入【highlighted】状态,本来应该显示为绿色,但是却发现按钮变成了红色(Normal状态). 就是因为【selected】状态和【highlighted】状态两种状态叠加后就变成了Normal状态.
#import "ViewController.h"#import "MYButton.h"@interface ViewController ()/** 按钮 */@property (nonatomic, weak) MYButton *button;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        MYButton *button = [[MYButton alloc] init];    [button setTitle:@"我是按钮" forState:UIControlStateNormal];    button.frame = CGRectMake(100, 100, 100, 30);    [button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];    [self.view addSubview:button];    self.button = button;        // 文字颜色    [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal];    [button setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted];    [button setTitleColor:[UIColor blueColor] forState:UIControlStateSelected];    [button setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];}- (void)buttonClick {    NSLog(@"%s", __func__);}- (void)touchesBegan:(NSSet
*)touches withEvent:(UIEvent *)event{ self.button.selected = YES;}@end复制代码

转载地址:http://tiwgl.baihongyu.com/

你可能感兴趣的文章
设置行间距,自适应文字大小
查看>>
资金流学习-广州发展
查看>>
python基础3(元祖、字典、深浅copy、集合、文件处理)
查看>>
正确编写Designated Initializer的几个原则
查看>>
iOS播放动态GIF图片
查看>>
获取版本号
查看>>
使用jdk自带的visualVM监控远程监控was
查看>>
集合视图UICollectionView 介绍及其示例程序
查看>>
JsLint 的安装和使用
查看>>
合并傻子//区间dp
查看>>
让IE和Chrome都以隐身模式启动
查看>>
MyPython-->进阶篇-->类
查看>>
unity remote 连接设置
查看>>
2018 NOIP备战计划
查看>>
教你如何迅速秒杀掉:99%的海量数据处理面试题
查看>>
zw版【转发·台湾nvp系列Delphi例程】HALCON InpaintingCt2
查看>>
POJ2155 Matrix
查看>>
字符串匹配算法
查看>>
Eclipse 问题整理
查看>>
Java常用工具类之RegexpUtils,正则表达式工具类
查看>>