摘要
按钮是一个宝藏控件,可以在设置的时候就对不同的状态添加图片、文本,甚至更改背景。在不同的展示场景中更改到不同的状态显示就好。恰恰是如何更改状态着实让我懵了一阵,所以记录一下过程。如果没有兴趣了解过程,可以直接滑到底部,截图表格收藏。
之前在处理一个按钮控件,按钮有可以点击和禁止点击两个不同的状态,因为这两种状态有不同的图标,所以就想用setImage(, for: )函数处理:
let btn =UIButton()
btn.setImage(UIImage(named:"pic1"),for: .normal)
btn.setImage(UIImage(named:"pic2"),for: .disabled)
设置完按钮控件后,剩下的处理就是在需要显示不同的状态的地方设置它的状态,刚好按钮有state属性,那么当欢欣鼓舞的设置btn.state = .disabled时,就一脸懵:
报的编译错误:说state属性只可以读,不可以写,不死心的我追进去看一下源码:
varstate: UIControl.State {get}
到这里彻底懵了,我要更改按钮状态为.disabled还不行了?
凡事就怕联想啊,我突然想到之前设置 按钮的状态为.selected之后,就通过更改.isSelected的true或者false来达到按钮更改状态效果,那就联想一下看,有没有.disabled?
这…….总不能可以设置,不能更改吧,要是这样,开放这属性就是为了玩吗?不能死心,这条路走不通,换条路,看看.disabled的源码去。
原来,竟然,出我意料。竟然用isEnabled来更改状态。既然到这个地方,那就顺手把按钮的状态和更改给总结一下:
UIControl.state | How change? | 状态解释 |
normal | 以下属性Bool值为都false | 默认状态,启用但是没有被选中或者被高亮状态 |
highlighted | isHighlighted | 高亮 |
disabled | isEnabled | 禁用 |
selected | isSelected | 选中 |
focused | 未知 | 聚焦 |
application | 未知 | 控件的附加应用标识 |
reserved | 未知 | 框架内部预留标识 |
至此,给按钮设置什么状态,怎么更改状态就直接参考上面的表吧。这些个未知情况,看后面有没有机缘发现了。
题外话
时间仓促,说的东西可能不全面,在你查看的过程中遇到什么问题,评论区给我留言,我会尽快回复
声明:本文部分素材转载自互联网,如有侵权立即删除 。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容