点击后让UIButton保持高亮显示

时间:2016-12-30 10:25:56

标签: ios swift uibutton

我正在尝试复制表情符号键盘底部的滚动选择器,您可以通过点击相应的图标来选择类别,如果滚动,它还会显示您的类别。但是,由于某些原因,我无法让所选按钮突出显示。我可以让滚动工作正常,但是当我点击图标时它不会保持突出显示。这与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

}

1 个答案:

答案 0 :(得分:0)

通过应用色调而不是使用isHighlightedisSelected属性,让它以我想要的方式工作:

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