如何设置子类UIButton的突出显示标题颜色?

时间:2012-08-06 01:40:44

标签: ios uibutton

我已经将UIButton子类化,并且在按钮突出显示时尝试设置标题颜色。自定义按钮也位于nib文件中。

我有代码:

- (void)layoutSubviews 
{
    [super layoutSubviews];

    self.titleLabel.textColor = [UIColor blueColor];
    [self setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; // Offending line

}

然而,当我有setTitleColor:forState:行时,视图不会加载(似乎进入无限循环并且不显示)。它应该在其他地方宣布吗?您如何设置自定义UIButton的突出显示的标题颜色?

2 个答案:

答案 0 :(得分:6)

如果你想在layoutSubviews中这样做,这将避免你当前正在创建的无限循环:

- (void)layoutSubviews
{
    [super layoutSubviews];

    if (self.state == UIControlStateHighlighted) {
        self.titleLabel.textColor = [UIColor redColor];
    } else {
        self.titleLabel.textColor = [UIColor blueColor];
    }
}

答案 1 :(得分:3)

您是否正在使用UIButton子类做其他事情?如果您只想更改文本颜色,则可以使用标准UIButton功能:

[button setTitleColor:[UIColor redColor] forControlState:UIControlStateHighlighted];
[button setTitleColor:[UIColor whiteColor] forControlState:UIControlStateNormal];

在设置按钮时执行此操作,不需要每次调用layoutSubviews时都会发生