如何更改启用 "Shows Touch On Highlight" 时使用的 UIButton "glow" 颜色?

How can I change the UIButton "glow" color used when "Shows Touch On Highlight" is enabled?

我有一个在故事板中启用了 "Shows Touch On Highlight" 的 UIButton。单击时,它会向按钮应用 "white" 发光。

但是,我有一个浅灰色按钮,我想更改发光颜色以使其更明显。

我试过将突出显示控件状态的背景图像设置为黑色,但它似乎与发光没有什么不同。我可以更改按钮的背景颜色---一切正常。

什么控制发光颜色(如果有的话)?或者,如果我需要不同的颜色,是否必须手动完成?

"Shows Touch On Highlight" 纯粹是为了方便,所以如果你想要不同的效果,你必须手动做一些事情。只需为突出显示的状态提供一张不同的图像,其中包括所需的 "glow" 绘图。

UIButton 上使用 setBackgroundImage 您可以创建以下扩展程序,让您可以为任何您想要的状态设置颜色:

extension UIButton {
    func setBackgroundColor(color: UIColor, for state: UIControlState) {
        let image = UIImage.image(with: color)
        let insets = UIEdgeInsetsMake(0, 0, 0, 0)
        let stretchable = image.resizableImage(withCapInsets: insets, resizingMode: .tile)
        self.setBackgroundImage(stretchable, for: state)
    }
}

您只需要为 .highlighted 状态设置背景颜色:

button.setBackgroundColor(color: UIColor.red, for: .highlighted)

我只希望你不介意亲自动手编写代码,我不太确定如何从情节提要中做同样的事情(我什至不确定你能做到)。