【发布时间】:2011-02-04 05:53:08
【问题描述】:
我正在创建一个带有多个标签的自定义按钮。我希望能够更改突出显示/正常 UIControlStates 上标签的文本颜色。我知道可以根据控件状态更改标题文本颜色,但我似乎无法为按钮内的自定义标签弄清楚。有什么想法吗?
【问题讨论】:
-
我在@Rich 的帮助下使用的代码在下面的单独答案中。
标签: objective-c uibutton uilabel subclass
我正在创建一个带有多个标签的自定义按钮。我希望能够更改突出显示/正常 UIControlStates 上标签的文本颜色。我知道可以根据控件状态更改标题文本颜色,但我似乎无法为按钮内的自定义标签弄清楚。有什么想法吗?
【问题讨论】:
标签: objective-c uibutton uilabel subclass
感谢@Rich 的想法。我将 UIButton 子类化并将这段代码放在新类中。
这是我使用的代码:
- (void)setHighlighted:(BOOL)bHighlighted
{
[super setHighlighted:bHighlighted];
if (bHighlighted) {
[label1 setTextColor:[UIColor whiteColor]];
[label2 setTextColor:[UIColor whiteColor]];
}else {
[label1 setTextColor:[UIColor blackColor]];
[label2 setTextColor:[UIColor blackColor]];
}
}
【讨论】:
听起来您想使用一些继承的 UIControl 方法(例如 sendAction:to:forEvent:) 这提供了比 UIButton 更精细的控制。
【讨论】:
这有点复杂,但我有一本书讨论了这个问题,它叫做高级 iOS 4 开发。基本上你必须使用运行时来换出 setHighlighted 方法。
编辑:它在技术上适用于 tableviewcells,但它在this 下 table view whiten
【讨论】: