如何设置子类UIButton的高亮标题颜色?
我已经子类UIButton
,并试图设置标题的颜色,当按钮被突出显示。自定义按钮也位于笔尖文件中。如何设置子类UIButton的高亮标题颜色?
我的代码:
- (void)layoutSubviews
{
[super layoutSubviews];
self.titleLabel.textColor = [UIColor blueColor];
[self setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; // Offending line
}
然而,视图不加载(貌似进入无限循环而没有示出)时,我有setTitleColor:forState:
线。它应该在其他地方宣布吗?你还怎么设置自定义UIButton
的高亮标题颜色?
如果你想这样做在layoutSubviews,这将避免无限循环您正在创建:
- (void)layoutSubviews
{
[super layoutSubviews];
if (self.state == UIControlStateHighlighted) {
self.titleLabel.textColor = [UIColor redColor];
} else {
self.titleLabel.textColor = [UIColor blueColor];
}
}
完美的作品。谢谢! – zlog 2012-08-07 01:03:49
这种方法的问题在于,在视图控制器的生命周期中多次调用这个方法,所以效率并不高。 – 2015-06-03 18:54:24
你在做别的用的UIButton子类?如果你想要做的是改变文字颜色,您可以使用标准的UIButton功能:
[button setTitleColor:[UIColor redColor] forControlState:UIControlStateHighlighted];
[button setTitleColor:[UIColor whiteColor] forControlState:UIControlStateNormal];
设置按钮时执行此操作,它并不需要发生每次layoutSubviews由“// Offnding称为
自定义按钮类的原因是因为它有点破解。我需要一个自定义字体f或我的按钮,当我在我的笔尖选中它时,xcode保持崩溃状态,所以我以编程方式更改了字体。这是另一个问题 – zlog 2012-08-06 12:38:12
线“,你究竟是什么意思?它报告编译时间消息吗?或者当你尝试执行它时出错?如果后者,你认为你有一个UIButton(或它的子类),但也许该对象实际上是别的东西? – 2012-08-06 02:37:16
违规行是什么使视图崩溃。它进入看起来像一个无限循环,并不加载。我会用这个更新我的问题。 – zlog 2012-08-06 11:46:20