2016-07-25 8 views
9

Mam numer UIButton i utworzyłem rozszerzenie, aby dodać kolor tła dla innego stanu.Kolor tła UIButton dla podświetlonego/wybranego stanu wydania

używam następujący kod:

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) 

Moim problemem jest to, że nie odbiera prawidłowego UIButton kolor tła i napisów kolor podświetlonego/wybranego państwa.

Normal state Highlighted state

Odpowiedz

39

znalazłem problem, UIButton została ustawiona Systemu .Ja po prostu zmienił go do klienta, zaczęło działa zgodnie z oczekiwaniami.

+0

Miałem ten sam problem, co sprawiło, że niestandardowy zrobił lewy. Stan wciśnięty jest wyróżniony zamiast tego, co myślałem (wybrano): S. – MQoder

0

Po wybraniu numeru UIButton. Jeśli ustawisz ostrość na przycisku, nie podświetlisz przycisku jako stanu .Highlighted. Jeśli nie zostanie wybrany, podświetli go jako wolę. Jeśli chodzi o to, że masz obraz tła w swoim przycisku, użyje on efektu domyślnego do podświetlenia obrazu. Jeśli chcesz zmienić stan na .Selected, musisz ustawić zmienną selected z UIButton na true.