如何更改启用 "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)
我只希望你不介意亲自动手编写代码,我不太确定如何从情节提要中做同样的事情(我什至不确定你能做到)。
我有一个在故事板中启用了 "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)
我只希望你不介意亲自动手编写代码,我不太确定如何从情节提要中做同样的事情(我什至不确定你能做到)。