Swift:如何子类化UIButton?

时间:2015-02-17 15:01:36

标签: xcode swift uibutton

我想要一个简单的类,当选中它时,它会改变按钮上背景和文本的颜色。

我有这个:

class buttonSelected : UIButton {        
    override var highlighted: Bool {
        get {
            return super.highlighted

        }
        set {                
                backgroundColor = UIColor(red: 0.27, green: 0.29, blue: 0.31, alpha: 1.0)
                //backgroundColor = UIColor.whiteColor()
                setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
                println(tag)
                super.highlighted = newValue
        }
    }        
}

这个子类很有用。我手动将标签添加到每个按钮。 第一个问题是为什么

pritnln(tag)

显示两次?

当用户再次按下按钮时,还有最好的方法可以恢复此功能。我不能再次突出显示子类,并且只有选中,禁用左侧。我通过cmd在突出显示的文本上获得此信息。

1 个答案:

答案 0 :(得分:2)

关于println(tag)显示两次的第一个问题,因为突出显示的值改变了两次:首先是单击按钮时(其值变为true),其次是当释放click时(其值变为false)

关于第二个问题,找到你想要的东西的最佳方法我认为是通过覆盖选定的var并根据newValue设置其set方法的颜色,但为了达到你必须以某种方式更改所选值并且我的第一个想到的是使用你已经覆盖的突出显示的var

override var highlighted: Bool {
    get {
        return super.highlighted

    }
    set {

            if(newValue){
                self.selected = !self.selected
            }
            super.highlighted = newValue
    }
}