2016-07-25 111 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設置爲系統。我只是把它改成定製,它開始按預期工作。

+0

我有同樣的問題,使它定製做伎倆。按下的狀態是突出顯示的,而不是我認爲(選定)的內容:S。 – MQoder

0

當你的UIButton被選中。如果您專注於該按鈕,則不會將該按鈕突出顯示爲狀態.Highlighted。如果未選中,則會按照您的意願突出顯示。因爲它認爲你的按鈕中有背景圖片,它將使用默認效果來突出顯示圖像。如果您想將狀態更改爲.Selected,則必須將UIButton的變量selected設置爲true。

相關問題