Keep UIButton Selected/Highlighted after touch
Use below code declare isHighLighted
as instance variable
//write this in your class var isHighLighted:Bool = falseoverride func viewDidLoad() { let button = UIButton(type: .system) button.setTitle("Your title", forState: UIControlState.Normal) button.frame = CGRectMake(0, 0, 100, 44) self.view.addSubview(button as UIView) button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)}func buttonClicked(sender:UIButton){ dispatch_async(dispatch_get_main_queue(), { if isHighLighted == false{ sender.highlighted = true; isHighLighted = true }else{ sender.highlighted = false; isHighLighted = false } });}
I would recomend to use selected
state instead of highlighted
the below code demonstarate with selected state
override func viewDidLoad() { let button = UIButton(type: .system) button.setTitle("Your title", forState: UIControlState.Normal) button.frame = CGRectMake(0, 0, 100, 44) self.view.addSubview(button as UIView) //set normal image button.setImage(normalImage, forState: UIControlState.Normal) //set highlighted image button.setImage(selectedImage, forState: UIControlState.Selected) button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)}func buttonClicked(sender:UIButton){ sender.selected = !sender.selected;}