禁用时,带有图像和蓝色文本的UIBarButtonItem会错误地变为白色文本

时间:2012-09-12 13:30:39

标签: iphone objective-c ios

我想要一个带有自定义图像和蓝色文本的UIBarButtonItem。我首先创建了一个带有文本,字体颜色和图像的UIButton,然后为UIBarButtonItem设置自定义视图。

问题是当我禁用UIBarButtonItem时,文本会变回白色。我不明白为什么。

UIButton *customButton = [UIButton buttonWithType:UIButtonTypeCustom];
[customButton setBackgroundImage:[UIImage imageNamed:@"images/ButtonHeader"] forState:UIControlStateNormal];
[customButton setTitle:myDynamicText forState:UIControlStateNormal];
[customButton setFrame:CGRectMake(0.0f, 0.0f, 70.0f, 44.0f)];
[customButton addTarget:myTarget action:myAction forControlEvents:UIControlEventTouchUpInside];
[customButton.titleLabel setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12.0f]];
[customButton.titleLabel setTextColor:[UIColor blueColor]];

UIBarButtonItem *customBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:customButton];

self.navigationBar.rightBarButtonItem = customBarButtonItem;
self.navigationBar.rightBarButtonItem.enabled = NO;

我真正想要做的是为启用和禁用状态设置不同的文本颜色,但是如果有人可以告诉我为什么文本在启用= NO时变为白色,以及如何阻止它,我可以自己解决这个问题。< / p>

1 个答案:

答案 0 :(得分:3)

您不应该通过获取这样的标签来设置字体颜色。您需要在按钮上配置它

[button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];

UIControlStateNormal将用于设置默认值,但您可以更改所有不同状态的颜色。 Control State

下的UIControl Class Reference底部提供了这些状态的列表