有没有办法在一次更新所有 UIControlStates 的 UIButton 上设置标题?
Posted
技术标签:
【中文标题】有没有办法在一次更新所有 UIControlStates 的 UIButton 上设置标题?【英文标题】:Is there a way to setTitle on a UIButton that updates all UIControlStates at once? 【发布时间】:2010-11-25 09:34:07 【问题描述】:我有一个 UIButton,我想更新它的标题,但我不想总是为每个状态都这样做,如下所示:
[myButton setTitle:@"Play" forState:UIControlStateNormal];
[myButton setTitle:@"Play" forState:UIControlStateHighlighted];
[myButton setTitle:@"Play" forState:UIControlStateSelected];
有没有更好的办法?
【问题讨论】:
【参考方案1】:根据文档,您只需要调用:
在 Objective-C 中:
[myButton setTitle:@"Play" forState:UIControlStateNormal];
在 Swift 中:
myButton.setTitle("Play", for: .normal)
UIButton 文档解释了原因:
一般来说,如果没有为状态指定属性,则默认使用 UIControlStateNormal 值。如果未设置 UIControlStateNormal 的值,则该属性默认为系统值。因此,您至少应该设置正常状态的值。
也就是说,如果你只设置正常值,其他状态在设置时都会引用它。
【讨论】:
这不是我的经历.custom
类型的按钮也不是这样。
请参阅下面的***.com/a/61159133/826946,了解涉及标题文本自定义颜色的情况【参考方案2】:
或者您可以通过以下方式设置标题:
[myButton setTitle:@"Play" forState:UIControlStateNormal|UIControlStateHighlighted|UIControlStateSelected];
【讨论】:
你为什么要这样做? 在一行中设置多个状态按钮的标题。 这是所有控件的确切方式。 UI Slider 在所有状态下都不会改变。有帮助 这不起作用,因为状态是NS_OPTIONS
。如果你使用UIControlStateNormal|UIControlStateHighlighted
,当按钮显示时你不能看到标题。【参考方案3】:
您可以为 UIButton 创建一个类别:
@implementation UIButton (Addition)
-(void)setTitleForAllStates:(NSString *)title
//you can add/remove this area : UIControlStateApplication, UIControlStateDisabled, UIControlStateReserved
[self setTitle:title forState:UIControlStateNormal];
[self setTitle:title forState:UIControlStateSelected];
[self setTitle:title forState:UIControlStateHighlighted];
@end
【讨论】:
【参考方案4】:2019
只是
yourButton.setTitle("Click me", for: .normal)
【讨论】:
【参考方案5】:答案:
button.setTitle("All", for: .normal)
或
button.setTitle("All", for: [])
通常是不正确的,因为它仅在某些状态的标题尚未设置时才有效。例如:
button.setTitle("N", for: .normal)
button.setTitle("HL", for: .highlighted)
button.setTitle("All", for: .normal)
在此代码按钮之后,突出显示状态的标题仍为“HL”。 因此,在一般情况下,要更改所有使用状态的标题,您必须遍历所有这些状态:
let states: [UIControl.State] = [.normal, .highlighted, .selected, [.highlighted, .selected]]
for state in states
button.setTitle("All", for: state)
(如果您使用其他状态,例如 .disabled,您还必须将它们的组合添加到循环中)
注意:UIControl.State 是一组选项,因此将标题设置为:
button.setTitle("All", for: [.selected, .highlighted])
不为选中状态和高亮状态设置标题“All”,而是为同时选中和高亮d的组合状态设置标题“All”。
【讨论】:
谢谢!如果您只设置一次颜色,这可以在界面生成器中完成,但具有相同的洞察力 - 您需要为每个状态设置颜色。以上是关于有没有办法在一次更新所有 UIControlStates 的 UIButton 上设置标题?的主要内容,如果未能解决你的问题,请参考以下文章
如果列值取决于文件路径,有没有办法在一次读取多个文件时将文字作为列添加到 spark 数据框中?