我已经将UIButton
子类化,并且在按钮突出显示时尝试设置标题颜色。自定义按钮也位于nib文件中。
我有代码:
- (void)layoutSubviews
{
[super layoutSubviews];
self.titleLabel.textColor = [UIColor blueColor];
[self setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; // Offending line
}
然而,当我有setTitleColor:forState:
行时,视图不会加载(似乎进入无限循环并且不显示)。它应该在其他地方宣布吗?您如何设置自定义UIButton
的突出显示的标题颜色?
答案 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时都会发生