iOS中UIButton的多种状态的隐藏设置
来源:互联网 发布:知乎提问如何添加话题 编辑:程序博客网 时间:2024/06/06 05:32
在类似点赞或切换浏览模式等功能的时候,需要用到button的选中状态:即点击后按钮切换图片,并保持这个状态,直到下一次点击.
这样设置后,按钮从normal变为selected的过程看起来似乎行得通了,但是,从selected再变回normal的过程还是会出现那个该死的hightLighted状态.
感到奇怪吧?我们明明已经设置了hightLighted状态下的图片,怎么回来的路行不通呢? 有没有可能从selected状态变回normal状态这个过程经历的并不是hightLighted状态,而是其他什么状态呢?
但是使用过这种方法的人应该都会遇到这样一个问题:不管按钮从normal状态转为selected状态,还是反过来,中间都会经历一个highLighted状态,这就导致在状态切换的过程中有一次图片的跳变.如图:
这样设置后,按钮从normal变为selected的过程看起来似乎行得通了,但是,从selected再变回normal的过程还是会出现那个该死的hightLighted状态.
感到奇怪吧?我们明明已经设置了hightLighted状态下的图片,怎么回来的路行不通呢? 有没有可能从selected状态变回normal状态这个过程经历的并不是hightLighted状态,而是其他什么状态呢?
typedef NS_OPTIONS(NSUInteger, UIControlState) { UIControlStateNormal = 0, // 0000 UIControlStateHighlighted = 1 << 0, // 0001 UIControlStateDisabled = 1 << 1, // 0010 UIControlStateSelected = 1 << 2, // 0100 UIControlStateFocused = 1 << 3, // 1000 UIControlStateApplication = 0x00FF0000, UIControlStateReserved = 0xFF000000 };
就是这几种情况,其实不然,它们的状态就可以多种组合的,会出现很多其他的状态,这也是为啥苹果要用 1 << 0 的方式去枚举按钮状态的原因吧如:// 0101 此为 选中态的 点击状态 (只有在这种情况下设置才会在 选中态 点击按钮才能设成你想要的 样子)UIControlStateHighlighted | UIControlStateSelected// 0110 此为 选中态的 不可点击状态UIControlStateDisabled | UIControlStateSelected0000, 每一位数都有各自的意思,我们将这样的
{
UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
// 未选中态
[button setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor] cornerRadius:5] forState:UIControlStateNormal];//
[button setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal];
// 选中态 [button setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor] cornerRadius:5] forState:UIControlStateSelected]; // 态 [button setTitleColor:[UIColor blackColor] forState:UIControlStateSelected]; { //未选中时的点击态 [button setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor] cornerRadius:5] forState:UIControlStateDisabled]; [button setTitleColor:[UIColor colorWithWhite:0.8 alpha:1] forState:UIControlStateDisabled]; // 选中时的不可点击状态 [button setBackgroundImage:[UIImage imageWithColor:[UIColor whiteColor] cornerRadius:5] forState:UIControlStateDisabled | UIControlStateSelected]; [button setTitleColor:[UIColor colorWithWhite:0.8 alpha:1] forState:UIControlStateDisabled | UIControlStateSelected]; } { // 未选中时的点击态 [button setBackgroundImage:[UIImage imageWithColor:[UIColor orangeColor] cornerRadius:5] forState:UIControlStateHighlighted]; // 点击态 [button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted]; // 选中时的点击态 [button setBackgroundImage:[UIImage imageWithColor:[UIColor orangeColor] cornerRadius:5] forState:UIControlStateHighlighted | UIControlStateSelected]; [button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted | UIControlStateSelected]; } }
- iOS中UIButton的多种状态的隐藏设置
- iOS设置改变UILabel、UIButton的多种颜色和字体大小(非常好用)
- iOS设置UIButton的字体
- iOS如何保持UIButton的Highlighted状态
- iOS中UILabel和UIButton的自定义设置
- 在IOS程序中设置UIButton的字体大小
- 在IOS程序中设置UIButton的字体大小
- iOS中UIButton的block
- iOS中UIButton的使用
- ios中UIButton的使用
- 设置IOS中状态栏的状态
- IOS开发 设置UIButton的title
- IOS 开发之设置UIButton的title
- IOS 开发之设置UIButton的title
- IOS 开发之设置UIButton的title
- IOS 开发之设置UIButton的title
- IOS 开发之设置UIButton的title
- IOS UIButton的一些设置代码
- sql修改字段类型大小
- C#中的is、as及转换
- MPI问题:HYDU_sock_connect (../../utils/sock/sock.c:224): unable to get host address for node1 (2)
- 华为——计算字符个数
- gitlab新建项目
- iOS中UIButton的多种状态的隐藏设置
- 安卓轮播图无限轮播(RecyclerView+ViewFlipper实现)
- 大众点评支付渠道网关系统的实践之路
- CentOS7修改网卡为eth0
- Collection和Collections的区别
- 中国文化
- 解析分派
- 机器学习之numpy和matplotlib学习(四)
- VS2015 遇到异常。这可能是由某个扩展导致的