如何在子类中获取UIButton的默认突出显示颜色/状态?

时间:2014-05-15 18:40:06

标签: ios objective-c uibutton

我有一个UIButton子类,它不使用UIImage背景,只使用背景颜色。我注意到的一件事是,当您设置按钮的背景图像时,会出现一个默认的突出显示状态,按下按钮时会变得稍暗。

这是我目前的代码。

 - (void)awakeFromNib
{
    [super awakeFromNib];
    self.backgroundColor = [UIColor whiteColor];
    self.layer.cornerRadius = 4;
    [self.titleLabel setFont:[UIFont systemFontOfSize:15]];
    [self setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
}

使用此代码,如果我只设置背景颜色,则不会给出默认选择状态。我已尝试用- (void)setHighlighted:(BOOL)highlighted覆盖它并设置按钮的颜色较深,但要么我没有正确的颜色,要么只是设置颜色。

我不确定我如何模仿选择状态。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

[self setTitleColor:[UIColor whiteColor] UIControlStateHighlighted]; // To set title label color for highlighted state.

答案 1 :(得分:0)

您可以通过向按钮注册事件来完成此操作。

[button addTarget:self action:@selector(buttonTouchDown:) forControlEvents:UIControlEventTouchDown | UIControlEventTouchDragInside];
[button addTarget:self action:@selector(buttonTouchUp:) forControlEvents:UIControlEventTouchUpInside|UIControlEventTouchCancel | UIControlEventTouchDragExit];

执行此操作后,您需要同时实现buttonTouchDown:和buttonTouchUp:。

    - (void) buttonTouchDown:(UIButton *)sender {
        // button color when it's highlighted
        sender.backgroundColor = [UIColor red];
    }