标签:
先科普以下常识:简单来看,按钮有点击、非点击2个状态,点击时系统会自动调用设置按钮高亮状态的方法(setHighlighted:);非点击时视为正常状态(normal)。我们可以根据需要给不同状态设置不同背景图片,苹果官方对按钮状态细致划分为3种:高亮(highlighted)、选中(selected)、普通(normal),如果编写代码时调用了方法(setSelected:),按钮会呈选中状态(selected)。
3种按钮状态,苹果官方命名为:
UIControlStateNorma(正常)、UIControlStateHighlighted(高亮)、UIControlStateSelected(选中)
接下来将2张按钮背景图片作为讲解素材:
UIControlStateNorma 状态选用灰色图片TabBar
UIControlStateHighlighted 或 UIControlStateSelected 状态选用金色图片TabBarSel
再次强调下,按钮点击时,一定会调用系统方法(setHighlighted:),并显示为事先设置的高亮状态图片,如果之前没设置,默认显示效果为在原图片下加一层灰色。点击后只要没松开手,就会保持highlighted状态,松开手恢复显示normal状态。
现在看如下代码:
// 设置按钮图片背景
NSString *name = [NSString stringWithFormat:@"TabBar"];
[button setBackgroundImage:[UIImage imageNamed:name] forState:UIControlStateNormal];
NSString *selectedName = [NSString stringWithFormat:@"TabBarSel" ];
[button setBackgroundImage : [UIImage imageNamed: selectedName] forState : UIControlStateHighlighted];// 第a行
// 监听按钮点击
[button addTarget:self action:@selector(buttonClick:) forControlEvents: UIControlEventTouchDown]; // 第e行
// 点击按钮调用方法
- (void)buttonClick:(UIButton *)button
{
button.selected = YES; // 第b行
}
// 设置高亮状态方法
- (void)setHighlighted:(BOOL)highlighted
{
[super setHighlighted:highlighted]; // 第c行
}
// 设置选中状态方法
- (void)setSelected:(BOOL)selected
{
[super setSelected:selected]; // 第d行
}
代码讲解:
贴出的代码是精简版,能传达清楚意思即可。对a、b、c、d、e各行做不同程度的修改,运行后点击按钮会看到不同的效果。
注意:如果把第e行UIControlEventTouchDown改成UIControlEventTouchUpInside,应用在上述4种情况时会显示效果会有一点差别,原因估计就在UIControlEventTouchDown是点击了就调用方法buttonClick:,而UIControlEventTouchUpInside是在松开手后才调用,具体效果大家可以自己试试。
【原创】(IOS开发)highlighted和selected两种按钮状态原理摸索分享
标签:
原文地址:http://www.cnblogs.com/xqry/p/5040604.html