我正在尝试复制表情符号键盘底部的滚动选择器,在这里您可以通过点击相应的图标来选择类别,如果您滚动,它还将显示您所在的类别。但是,由于某种原因,我无法使选中的按钮突出显示。我可以使滚动条正常工作,但是当我单击该图标时,它将不会突出显示。这与touchUpInside触发器的某些属性和突出显示的属性有关吗?

我的密码

var categoryButtons = [UIButton]()
var categoryDistances = [CGFloat]()

func scrollViewDidScroll(_ scrollView: UIScrollView) {

    var curIndex = -1

    for d in categoryDistances {

        if (scrollView.contentOffset.x + 5 >= d) {
            curIndex += 1
        }
    }

    for b in categoryButtons {
        b.isHighlighted = false
    }

    if (curIndex == -1) {
        curIndex = 0
    }

    categoryButtons[curIndex].isHighlighted = true

}

func shortcutSelected(_ sender: UIButton) {

    snapSelector.contentOffset.x = categoryDistances[categoryButtons.index(of: sender)!]

    for b in categoryButtons {
        b.isHighlighted = false
    }

    sender.isHighlighted = true

}

最佳答案

通过应用色调颜色而不是使用isHighlightedisSelected属性,使其按照我想要的方式工作:

let tintedImg = origImg?.withRenderingMode(UIImageRenderingMode.alwaysTemplate)
let shortcut = UIButton()
shortcut.setBackgroundImage(tintedImg, for: .normal)
shortcut.tintColor = UIColor.gray

10-04 13:07