设置UIButton的titleLabel字体会将textColor更改为默认值吗?

时间:2014-01-28 15:13:36

标签: ios uibutton

我正在开发ios 6的应用程序。这是一种表单设计应用程序,我发现如果我们在应用程序中更改titlelabel.textColor某个点,那么如果我们更改字体,则textColor会在分配时更改为默认值。 我在下面检查了这个

我将一个示例按钮拖到我的示例viewcontroller中,并在viewcontroller.h文件中创建一个名为myButton的IBOutlet属性 in -viewDidLoad

[myButton.titleLabel setTextColor:[UIColor redColor]];

并在按钮操作中我确实喜欢下面

- (IBAction)btnLoginClicke:(UIButton *)sender {
   [myButton.titleLabel setFont:[UIFont fontWithName:@"Arial" size:18]];

下面是我的前后按钮点击动作截图

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:5)

如果要将应用程序中的所有按钮保持为相似的颜色,那么最好选择全局外观设置。然后你不必担心所有地方的按钮标题颜色。

将这些行放在appDelegate方法的didFinishLaunchWithOptions中。

[[UIButton appearance] setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[[UIButton appearance] setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted];

希望有所帮助。

答案 1 :(得分:1)

如果您使用以下方式设置UIButton标题的颜色:

[myButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

分配新字体时,颜色信息不会丢失。

我认为这是因为UIButton类根据您使用setTitleColor(或故事板)为不同UIButton状态设置的不同颜色在内部设置textLabel的颜色。直接更改textLabel的颜色不会更改UIButton为每个状态存储的颜色,并且每次UIButton需要重绘时都会重新应用它们。设置新字体时会发生这种情况 - UIButton必须重绘自己,但它会通过setTitleColor:forState:。

使用颜色设置来完成。