【问题标题】:how to get the default highlighted color/ state of UIButton in a subclass?如何在子类中获取 UIButton 的默认突出显示颜色/状态?
【发布时间】:2014-07-04 08:54:49
【问题描述】:

我有一个 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 覆盖它并设置按钮的较暗颜色,但要么我没有得到正确的颜色,要么只是设置颜色。

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

【问题讨论】:

标签: ios objective-c uibutton


【解决方案1】:
[self setTitleColor:[UIColor whiteColor] UIControlStateHighlighted]; // To set title label color for highlighted state.

【讨论】:

  • 我说的是 UIButton 的整个颜色,而不仅仅是标题的颜色
  • 我没有看到 Yameo 分享的链接,我认为它可以回答您的问题。
【解决方案2】:

您可以通过向按钮注册事件来做到这一点。

[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];
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 2013-12-16
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多