Swift - 无论状态如何设置 UIButton 标题
Posted
技术标签:
【中文标题】Swift - 无论状态如何设置 UIButton 标题【英文标题】:Swift - set UIButton title regardless of state 【发布时间】:2016-03-11 06:10:09 【问题描述】:在 Swift 中有没有办法为所有状态更改 UIButton 的标题/标签?我正在将 UIButton 的标题设置为某些内容,但是当它未突出显示时,标签会更改为以前的内容。
谢谢
【问题讨论】:
请显示一些代码。 “如果没有为状态指定标题,则默认行为是使用与 UIControlStateNormal 状态关联的标题。” 【参考方案1】:没有一种方法可以同时为所有状态设置标题,但是如果您从不为正常状态以外的状态设置标题,未设置的状态将默认为正常标题.
来自the docs
如果没有为状态指定标题,则默认行为是使用与 UIControlStateNormal 状态关联的标题。如果未设置 UIControlStateNormal 的值,则该属性默认为系统值。
所以打电话
button.setTitle("Button text", for:.normal)
没有为其他州设置标题。如果您需要为其他状态设置不同的标题,则每次更改按钮的标题时都需要重新设置它们。
【讨论】:
button.setTitle("title", for: UIControlState()) 也可以为所有控件状态设置标题。 @ataravati - 进行了轻微的语法调整,但除此之外,它在我的测试中工作得很好。 我还必须为highlighted
指定一个。【参考方案2】:
setTitle 现在需要一个 OptionSet - 所以你需要传入一个空集。
现在的语法是:
button.setTitle("Button Text", for: [])
【讨论】:
谢谢!但是应该说,这些迅捷的团队没有审美意识,他们不明白:[]看起来丑得要命!.normal
在 Swift 3 中仍然可用,并且工作得很好。但是UIControlState
是一个OptionSet
,所以传递[]
意味着一个空集。以上是关于Swift - 无论状态如何设置 UIButton 标题的主要内容,如果未能解决你的问题,请参考以下文章
The Swift Code之设置UIButton的不同方式创建,以及不同的状态和外观
如何在 Swift 中以编程方式更改 UIButton 状态
.normal 选项在 UIButton 的状态 OptionSet 中不起作用(Swift 3)