ios - 突出显示时如何更改 UIButton 的背景颜色?

在我的应用程序中的某个时刻,我有一个突出显示的 UIButton(例如,当用户将手指放在按钮上时)并且我需要在按钮突出显示时更改背景颜色(所以当用户的手指仍在按钮上)。

我尝试了以下方法:

_button.backgroundColor = [UIColor redColor];

但它不起作用。颜色保持不变。当按钮未突出显示并且工作正常时,我尝试了相同的代码。我也试过在改变颜色后调用-setNeedsDisplay,没有任何效果。

如何强制按钮改变背景颜色?

最佳答案

您可以覆盖 UIButtonsetHighlighted 方法。

Objective-C

- (void)setHighlighted:(BOOL)highlighted {
    [super setHighlighted:highlighted];

    if (highlighted) {
        self.backgroundColor = UIColorFromRGB(0x387038);
    } else {
        self.backgroundColor = UIColorFromRGB(0x5bb75b);
    }
}

Swift 3.0 和 Swift 4.1

override open var isHighlighted: Bool {
    didSet {
        backgroundColor = isHighlighted ? UIColor.black : UIColor.white
    }
}

https://stackoverflow.com/questions/14523348/

相关文章:

ios - 如何更改导航栏上 "back"按钮的标题

ios - 如何以毫秒为单位准确记录方法的执行时间?

ios - 设置自定义 UITableViewCells 高度

ios - 在 Swift 中使用 UI_USER_INTERFACE_IDIOM() 检测当前设备

ios - 您可以将 UIGestureRecognizer 附加到多个 View 吗?

ios - 查看保存的 NSUserDefaults 的简单方法?

objective-c - 在 Storyboard中,如何制作用于多个 Controller 的自

objective-c - 有没有办法从 UITableView 中删除分隔线?

ios - setNeedsLayout 与 setNeedsUpdateConstraints 和

objective-c - GCD 在主线程中执行任务