为 UIButton 设置 titleLabel

Posted

技术标签:

【中文标题】为 UIButton 设置 titleLabel【英文标题】:Setting titleLabel for UIButton 【发布时间】:2012-09-04 14:42:11 【问题描述】:

今天我有点困惑地发现,在尝试更改 UIButton 上显示的文本时,以下内容不起作用。

// 001
[[[self button] titleLabel] setText:@"Peanuts"];

我想我知道为什么,但我只是想在这里确认一下我的想法。 001 确实设置了 titleLabel 文本属性,但作为 UILabelUIButton 的子视图)它不会导致 UI 被重绘。这会导致 UILabel 文本属性的内部更改,但遗憾的是 UI 中没有视觉变化。

// 002
[[self button]setTitle:@"Peanuts" forState:UIControlStateNormal];

似乎 setTitle:forState 方法是正确的方法,它具有需要状态的额外开销,但确实会调用 UI 重绘,因为它直接在 UIButton 上调用。我的问题是,002 是正确的方法吗,除非我做错了什么?

【问题讨论】:

【参考方案1】:

你是对的。

[[self button]setTitle:@"Peanuts" forState:UIControlStateNormal];

是按钮标题的设置方式。这使您可以控制按钮在其所有不同控制状态下的外观。

来自文档:

一般来说,如果没有为状态指定属性,则默认为 使用 UIControlStateNormal 值。如果值为 未设置 UIControlStateNormal,则该属性默认为 系统价值。因此,您至少应该将值设置为 正常状态。

【讨论】:

以上是关于为 UIButton 设置 titleLabel的主要内容,如果未能解决你的问题,请参考以下文章

为 UIButton 设置 titleLabel

如何使用 RxCocoa 将图像设置为 UIButton

为 UIButton isHighlighted 属性设置 Observable

无法在 Xamarin C# 中将图像设置为 UIButton

iOS 设置所有UIButton的ExclusiveTouch属性为YES

如何将 UIButton 的高亮属性设置为 NO?