2016-07-25 4 views
9

J'ai un UIButton et j'ai créé une extension pour ajouter une couleur d'arrière-plan pour un état différent.Couleur d'arrière-plan UIButton pour l'état en surbrillance/état sélectionné

J'utilise le code suivant:

extension UIButton { 

    func setBackgroundColor(color: UIColor, forState: UIControlState) { 

     UIGraphicsBeginImageContext(CGSize(width: 1, height: 1)) 
     CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), color.CGColor) 
     CGContextFillRect(UIGraphicsGetCurrentContext(), CGRect(x: 0, y: 0, width: 1, height: 1)) 
     let colorImage = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     self.setBackgroundImage(colorImage, forState: forState) 
    } 
} 


// Set Button Title and background color for different states 
    self.donateButton.setBackgroundColor(UIColor.redColor(), forState: .Normal) 
    self.donateButton.setTitleColor(UIColor.whiteColor(), forState: .Normal) 
    self.donateButton.setBackgroundColor(UIColor.greenColor(), forState: .Highlighted) 
    self.donateButton.setTitleColor(UIColor.whiteColor(), forState: .Highlighted) 
    self.donateButton.setBackgroundColor(UIColor.greenColor(), forState: .Selected) 
    self.donateButton.setTitleColor(UIColor.whiteColor(), forState: .Selected) 

Mon problème est qu'il ne ramasse pas une bonne couleur de fond et la couleur UIButton titre pour en surbrillance/état sélectionné.

Normal state Highlighted state

Répondre

39

Je trouve la question, UIButton a été mis à système .Je simplement changé à sur mesure, il a commencé à travailler comme prévu.

+0

J'ai eu le même problème, ce qui en fait la coutume a fait l'affaire. L'état pressé est surligné au lieu de ce que je pensais (sélectionné): S. – MQoder

0

Lorsque votre UIButton est sélectionnée. Si vous vous concentrez sur le bouton, le bouton ne sera pas mis en surbrillance en tant qu'état .Highlighted. Si ce n'est pas sélectionné, il sera mis en évidence comme votre volonté. En ce qui concerne vous avez l'image de fond dans votre bouton, il utilisera l'effet par défaut pour mettre en évidence une image. Si vous souhaitez modifier l'état à .Selected, vous devez définir la variable selected de UIButton sur true.