3

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

我有代码:

- (void)layoutSubviews 
{
    [super layoutSubviews];

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

}

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

4

2 回答 2

6

如果您想在 layoutSubviews 中执行此操作,这将避免您当前正在创建的无限循环:

- (void)layoutSubviews
{
    [super layoutSubviews];

    if (self.state == UIControlStateHighlighted) {
        self.titleLabel.textColor = [UIColor redColor];
    } else {
        self.titleLabel.textColor = [UIColor blueColor];
    }
}
于 2012-08-06T05:05:27.213 回答
3

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

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

在设置按钮时执行此操作,每次调用 layoutSubviews 时都不需要这样做

于 2012-08-06T11:51:13.463 回答