UIButton设置了图片/背景图片后无法高亮显示标题

3
我有一个带有右对齐箭头图标的自定义按钮。 Login button default 当它被点击并高亮时,只有箭头图标会被突出显示。文本仍然是白色而不是像图标一样变成灰色。 Login button highlighted 这是代码(在UIButton的子类中定义):
let rightIcon = #imageLiteral(resourceName: "disclosureIndicator")

setTitleColor(.white, for: .normal)
setBackgroundImage(rightIcon, for: .normal)

guard let image = backgroundImage(for: .normal) else { return }

titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: image.size.width)

我还覆盖了backgroundRect属性。

override func backgroundRect(forBounds bounds: CGRect) -> CGRect {
    guard let image = backgroundImage(for: .normal) else {
        return super.backgroundRect(forBounds: bounds)
    }
    return CGRect(
        x: frame.width - (image.size.width + 20),
        y: (frame.height / 4) + (image.size.height / 4),
        width: image.size.width,
        height: image.size.height)
}

我还尝试过设置按钮图像(即setImage(rightIcon, .normal))而不是设置按钮背景图像,但它没有奏效。 我还尝试将图标和标题的高亮颜色设置为灰色,但也没有奏效。 我希望在按钮被点击时既能突出文本又能突出图标,但似乎找不到实现这一点的方法。这真的做不到吗?

你尝试过这个吗? https://dev59.com/0G025IYBdhLWcg3wUESP - Umair Aamir
1个回答

7
将按钮类型从Custom更改为System解决了问题。现在它们都可以像应该的那样高亮显示。

IB属性检查器


这样做后,按钮图像会变成蓝色。 - Ramis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接