Ios 更改uicontrol状态上的UIButton背景色。高亮显示?

Ios 更改uicontrol状态上的UIButton背景色。高亮显示?,ios,objective-c,swift,Ios,Objective C,Swift,我有以下按钮: // create footerView let footerView: UIView = UIView() footerView.backgroundColor = UIColor.yellowColor() self.view.addSubview(footerView) footerView.snp_makeConstraints { (make) -> Void in make.left.equalTo(self.view.snp_left) make.r

我有以下按钮:

// create footerView
let footerView: UIView = UIView()
footerView.backgroundColor = UIColor.yellowColor()
self.view.addSubview(footerView)

footerView.snp_makeConstraints { (make) -> Void in
  make.left.equalTo(self.view.snp_left)
  make.right.equalTo(self.view.snp_right)
  make.height.equalTo(self.footerHeight)
  make.bottom.equalTo(self.view.snp_bottom)
}

let footerButton: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
footerButton.setTitle("OK", forState: UIControlState.Normal)
footerButton.backgroundColor = UIColor.redColor()
footerButton.tintColor = UIColor.whiteColor()
footerButton.setTitleColor(UIColor.grayColor(), forState: UIControlState.Highlighted)
footerView.addSubview(footerButton)

footerButton.snp_makeConstraints { (make) -> Void in
  make.center.equalTo(footerView)
  make.left.equalTo(footerView.snp_left).offset(45)
  make.right.equalTo(footerView.snp_right).offset(-45)
}
编辑:我可以用

footerButton.setBackgroundImage(redImage, forState: UIControlState.Highlighted)
但如果我按下按钮,这会破坏自动布局和边界半径


如何更改uicontrol状态上按钮的背景色。突出显示的?

没有
-setBackgroundColor:forState
方法。您可以创建一个纯色背景图像(通过编程或包含在您的参考资料中)并使用

- setBackgroundImage:forState:

@stephan1001我试过这个代码,它很有效

class ViewController: UIViewController {

var footerHeight = 70.0

override func viewDidLoad() {
    super.viewDidLoad()
    configUI()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

func configUI(){
    // create footerView
    let footerView: UIView = UIView()
    footerView.backgroundColor = UIColor.yellowColor()
    self.view.addSubview(footerView)

    footerView.snp_makeConstraints { (make) -> Void in
        make.left.equalTo(self.view.snp_left)
        make.right.equalTo(self.view.snp_right)
        make.height.equalTo(self.footerHeight)
        make.bottom.equalTo(self.view.snp_bottom)
    }

    let footerButton: MyButton = MyButton.buttonWithType(UIButtonType.Custom) as! MyButton
    footerButton.setTitle("OK", forState: UIControlState.Normal)
    footerButton.backgroundColor = UIColor.redColor()
    footerButton.tintColor = UIColor.whiteColor()
    footerButton.setTitleColor(UIColor.grayColor(), forState: UIControlState.Highlighted)
    footerView.addSubview(footerButton)

    footerButton.snp_makeConstraints { (make) -> Void in
        make.center.equalTo(footerView)
        make.left.equalTo(footerView.snp_left).offset(45)
        make.right.equalTo(footerView.snp_right).offset(-45)
    }
}


}

class MyButton: UIButton{
    override var highlighted: Bool {
        willSet(newValue) {
            if ( newValue == true ){
                self.backgroundColor = UIColor.greenColor()
            } else{
                self.backgroundColor = UIColor.redColor()
            }
        }

    }
}

有什么问题?它只是不显示,还是您得到了一个错误?您是否在代码的后面更改了UIButton上的其他内容?您无法为指定的状态设置背景色,只能使用图像。请尝试此操作。检查此帖子,但如果我点击按钮,这将破坏自动布局和边框半径。这将更改自动布局并删除按钮边框。@stephan1001,我尝试过此选项,效果良好。