【发布时间】:2011-09-10 00:08:58
【问题描述】:
我有一个带有背景图像和文本的 iPhone UIButton(自定义)。
触摸时,图像变暗(良好),但文本从设置的黑色变为白色。
如何使文本保持相同的黑色,以便在触摸按钮时,只有图像会改变颜色。
【问题讨论】:
我有一个带有背景图像和文本的 iPhone UIButton(自定义)。
触摸时,图像变暗(良好),但文本从设置的黑色变为白色。
如何使文本保持相同的黑色,以便在触摸按钮时,只有图像会改变颜色。
【问题讨论】:
大多数时候,下面的行就可以了:
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
如果什么都没有发生,那么使用这个:
[button setTitleColor:[UIColor blackColor] forState:(UIControlStateSelected | UIControlStateHighlighted | UIControlStateNormal)];
或者这样可以解决问题:
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateSelected];
请参阅下面的 cmets 了解此答案已被编辑/扩展为包括 2 条单独的行的原因。
【讨论】:
UIControlStateHighlighted = 1 << 0 和 UIControlStateSelected = 1 << 2 的定义。如果只有 1 并且同时设置了两个状态,则按位 OR 应该使它成为黑色的标题颜色。
[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted]
【讨论】:
okButton.titleLabel.textColor = [UIColor redColor];
[okButton addTarget:self action:@selector(isPressingForgetButton:) forControlEvents:UIControlEventTouchDown];
[okButton addTarget:self action:@selector(didPressForgetButton:) forControlEvents:UIControlEventTouchUpInside];
- (void) isPressingForgetButton:(id)sender
{
UIButton * bt = (UIButton *)sender;
bt.titleLabel.textColor = [UIColor greenColor];
}
- (void) didPressForgetButton:(id)sender
{
UIButton * bt = (UIButton *)sender;
bt.titleLabel.textColor = [UIColor redColor];
[self gotoUnblockView];
}
【讨论】: