UIButton setTitle:forState: 使用 UIConrolState() 作为参数
Posted
技术标签:
【中文标题】UIButton setTitle:forState: 使用 UIConrolState() 作为参数【英文标题】:UIButton setTitle:forState: use UIConrolState() as parameter 【发布时间】:2017-02-28 14:40:16 【问题描述】:我总是将 UIButton 的标题设置如下
aButton.setTitle(title, for: .normal)
然而,最近我看到了这个
aButton.setTitle(title, for: UIControlState())
设置标题的方式正确吗?
【问题讨论】:
是的,如果它没有显示任何错误,因为它可能在初始化时使用默认状态 【参考方案1】:同样合法且相同:
aButton.setTitle(title, for: [])
原因是.normal
是零选项。
专家补充:在 Swift 3 的准备阶段,.normal
被废除,[]
或 UIControlState()
是唯一指定方式零选项。这是因为一条规则说,Objective-C 选项集的零选项根本没有按名称导入到 Swift 中。然而,该规则的这种一揽子应用(通常仍然存在)引起了巨大的混乱和抱怨,.normal
被大众需求带回来了。
【讨论】:
【参考方案2】:两个语句的结果相同。 aButton.setTitle(title, for: .normal)
是设置按钮标题的“常规方式”...
【讨论】:
【参考方案3】:两者的区别很简单:
aButton.setTitle(title, for: .normal)
仅为正常状态设置文本,您可以选择为其他控制状态设置一些不同的文本为selected,重点,突出
但使用
aButton.setTitle(title, for: UIControlState())
是不同的东西 只要它不抛出任何错误。
【讨论】:
我认为你最后的说法是不对的。以上是关于UIButton setTitle:forState: 使用 UIConrolState() 作为参数的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Swift4 会强制转换 UIButton 数组!到 [UIButton?] 类型?
UIButton:根据titleLabel Text计算UIButton的高度
我们在swiftui中作为 UIButton(Sender: UIButton) 有啥? [关闭]