UIButton setBackgroundColor:ForState
2015-02-03 22:18
676 查看
在使用UIButton时,很多时候我们需要一个类似于- (void)setBackgroundColor:(UIColor *)color forState:(UIControlState)state这样的方法,来实现在不同的状态下使用不同的backgroundColor。遗憾的是,iOS默认并没有实现这个方法,那我们就自己来实现它。
让我们先来看看对于设置BackgroundImage,UIButton提供了如下方法:
类似的,我们的函数实现声明如下:
具体实现如下所示,代码很简单,不再赘述。
使用时,如下调用即可:
需要注意的一点是,有些人可能会这样使用
这种用法是不被支持的,虽然可以实现,但是,其实对于iOS默认提供方法- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state UI_APPEARANCE_SELECTOR; // default is nil这种位于的用法也是不被完全支持的,大家可以试试看。
下面我们再来详细讨论下UIButton切换state的顺序问题。
当UIButton被按下时,会启动一个计时器,每隔一段时间,都会去检测按钮是否还处在被按下的状态。如果系统检测到它还处于被按下的状态,则就会切换到UIControlStateHighlighted,否则,恢复到UIControlStateNormal。当你长按后,在当前按钮的区域抬起手时,会切换到UIControlStateSelected,但是,需要注意的是,这次切换不仅会触发setSelected:被调用,也会触发setHighlighted:的一次调用。大家可以看看下面打印出来的Log。
2015-01-08 19:44:05.328 V |: highlighted = 1 @ WMButton(#38).-[WMButton setHighlighted:]
2015-01-08 19:44:05.346 V |: selected = 1 @ WMButton(#56).-[WMButton setSelected:]
2015-01-08 19:44:05.347 V |: highlighted = 0 @ WMButton(#38).-[WMButton setHighlighted:]
让我们先来看看对于设置BackgroundImage,UIButton提供了如下方法:
下面我们再来详细讨论下UIButton切换state的顺序问题。
当UIButton被按下时,会启动一个计时器,每隔一段时间,都会去检测按钮是否还处在被按下的状态。如果系统检测到它还处于被按下的状态,则就会切换到UIControlStateHighlighted,否则,恢复到UIControlStateNormal。当你长按后,在当前按钮的区域抬起手时,会切换到UIControlStateSelected,但是,需要注意的是,这次切换不仅会触发setSelected:被调用,也会触发setHighlighted:的一次调用。大家可以看看下面打印出来的Log。
2015-01-08 19:44:01.895 V |: highlighted = 1 @ WMButton( #38).-[WMButton setHighlighted:] |
2015-01-08 19:44:05.346 V |: selected = 1 @ WMButton(#56).-[WMButton setSelected:]
2015-01-08 19:44:05.347 V |: highlighted = 0 @ WMButton(#38).-[WMButton setHighlighted:]
相关文章推荐
- iOS --- 为UIButton添加setBackgroundColor:forState:方法(包含OC和Swift两个版本)
- UIButton setBackgroundColor:ForState
- UIButton的setImage:forState:和setBackgroundImage:forState:方法
- 设置按钮等文本,得用[Button setTitleColor:textColor forState:UIControlStateNormal]
- UIButton实现setBackgroundColor:ForState功能
- SDWebImage [UIButton setImageWithURL:(NSURL *) forState:(UIControlState)] 的bug
- 解决 UIView 设置背景为UIImage图片变型问题[XXX setBackgroundColor:[UIColor colorWithPatternImage:XXX]];
- setBackgroundColor
- (Sharepoint 2010) Change the background and font color of text for a web part header
- android 笔记: setBackgroundDrawable和setBackgroundColor的用法
- setBackgroundDrawable和setBackgroundColor的用法
- Android setbackgroundcolor()方法的使用
- setBackgroundDrawable和setBackgroundColor的用法
- setBackground、setBackgroundColor、setBackgroundDrawable、setBackgroundResource的区别
- setBackgroundDrawable和setBackgroundColor的用法
- setFont for UIButton is deprecated
- android代码设置背景setBackgroundColor无效
- android中setBackgroundColor()中不能设置背景颜色的问题
- UIButton的setImage、setBackgroundImage
- setBackgroundDrawable和setBackgroundColor的用法