5

今天我有点困惑地发现,在尝试更改UIButton.

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

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

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

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

4

1 回答 1

7

你是对的。

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

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

从文档:

通常,如果未为状态指定属性,则默认使用 UIControlStateNormal 值。如果未设置 UIControlStateNormal 的值,则该属性默认为系统值。因此,您至少应该设置正常状态的值。

于 2012-09-04T14:48:58.833 回答