2016-07-25 11 views
9

私はUIButtonを持っていて、さまざまな状態の背景色を追加するための拡張を作成しました。UIButtonハイライトされた状態または選択された状態の問題の背景色

私は、次のコードを使用しています:

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) 

私の問題は、それが強調表示/選択状態のための適切なUIButton背景色とタイトルの色を拾っていないことです。

Normal state Highlighted state

答えて

39

私は問題を発見し、UIButtonがシステムに設定した.Iは単に期待どおりに作業を開始し、カスタムにそれを変更しました。

+0

私は同じ問題を抱えていました。押された状態は、私が思った(選択された)ものの代わりに強調表示されます:S。 – MQoder

0

UIButtonが選択されている場合。ボタンに注目すると、ボタンは状態.Highlightedとして強調表示されません。選択されていない場合は、それがあなたの意志として強調表示されます。あなたのボタンには背景画像があるので、デフォルトの効果を使って画像を強調表示します。状態を.Selectedに変更する場合は、変数selectedUIButtonに設定する必要があります。

関連する問題