zoukankan      html  css  js  c++  java
  • Swift技巧(六)设置按钮状态并更改

    摘要

    按钮是一个宝藏控件,可以在设置的时候就对不同的状态添加图片、文本,甚至更改背景。在不同的展示场景中更改到不同的状态显示就好。恰恰是如何更改状态着实让我懵了一阵,所以记录一下过程。如果没有兴趣了解过程,可以直接滑到底部,截图表格收藏。

    之前在处理一个按钮控件,按钮有可以点击和禁止点击两个不同的状态,因为这两种状态有不同的图标,所以就想用 setImage(, for: ) 函数处理:

    let btn = UIButton()
    btn.setImage(UIImage(named: "pic1"), for: .normal)
    btn.setImage(UIImage(named: "pic2"), for: .disabled)
    

    设置完按钮控件后,剩下的处理就是在需要显示不同的状态的地方设置它的状态,刚好按钮有 state 属性,那么当欢欣鼓舞的设置 btn.state = .disabled 时,就一脸懵:

    state-error

    报的编译错误:说 state 属性只可以读,不可以写,不死心的我追进去看一下源码:

    var state: UIControl.State { get }
    

    到这里彻底懵了,我要更改按钮状态为 .disabled 还不行了?

    凡事就怕联想啊,我突然想到之前设置 按钮的状态为 .selected之后,就通过更改 .isSelectedtrue 或者 false 来达到按钮更改状态效果,那就联想一下看,有没有 .disabled

    state-error2

    这.......总不能可以设置,不能更改吧,要是这样,开放这属性就是为了玩吗?不能死心,这条路走不通,换条路,看看 .disabled 的源码去。

    state-error3

    原来,竟然,出我意料。竟然用 isEnabled 来更改状态。既然到这个地方,那就顺手把按钮的状态和更改给总结一下:

    UIControl.state How change? 状态解释
    normal 以下属性 Bool 值为都 false 默认状态,启用但是没有被选中或者被高亮状态
    highlighted isHighlighted 高亮
    disabled isEnabled 禁用
    selected isSelected 选中
    focused 未知 聚焦
    application 未知 控件的附加应用标识
    reserved 未知 框架内部预留标识

    至此,给按钮设置什么状态,怎么更改状态就直接参考上面的表吧。这些个未知情况,看后面有没有机缘发现了。

    题外话

    时间仓促,说的东西可能不全面,在你查看的过程中遇到什么问题,评论区给我留言,我会尽快回复

  • 相关阅读:
    Devops的衍生-腾讯优测
    如何评估软件测试的效率
    优测云服务平台如何破解兼容性测试操作难点
    测试工程师进阶面试题目大合集
    测试人员必看-做好自动化测试的7大技能
    史上最全软件开发|程序员必备的工具集
    腾讯优测优分享 | 高质量产品、高质量照片
    腾讯优测优分享 | 多媒体,多问题
    腾讯优测优分享 | 双卡双待-工程师难言的痛
    C#面向对象基础
  • 原文地址:https://www.cnblogs.com/shsuper/p/15574372.html
Copyright © 2011-2022 走看看