Odpowiedzi:
Twój przycisk musi mieć buttonType
ustawiony niestandardowy.
W IB możesz odznaczyć "Podświetlenie dopasowuje obraz".
Programowo możesz użyć theButton.adjustsImageWhenHighlighted = NO;
Podobne opcje są dostępne również dla stanu „wyłączony”.
Oprócz powyższej odpowiedzi o odznaczeniu „podświetlenie dostosowuje obraz” w IB, upewnij się, że typ przycisku jest ustawiony na CUSTOM.
To zadziała dla Ciebie:
[button setBackgroundImage:[UIImage imageNamed:@"button_image"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected | UIControlStateHighlighted];
Trzecia linia jest tutaj sztuczką ...
Działa to tak samo przy ustawianiu image / backgroundImage
adjustsImageWhenHighlighted
Właściwość UIButton
wydaje się wpływać tylko obraz tła.
W zależności od tego, co zmieni się z domyślnego na podświetlony stan przycisku, możesz wywołać kilka metod, aby ustawić je na to, czego potrzebujesz. Więc jeśli obraz się zmieni, możesz to zrobić
[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Jeśli tekst się zmieni, możesz to zrobić
[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
inne podobne funkcje:
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state
OK, oto proste rozwiązanie, jeśli to działa dla Ciebie, po tygodniu uderzania głową w to w końcu przyszło mi do głowy, że po prostu ustawiłem podświetloną = NIE dla pierwszej linii metody IBAction dla TouchUpInside lub TouchDown, lub cokolwiek działa. Dla mnie było dobrze na TouchUpInside.
-(IBAction)selfDismiss:(id)sender {
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
}
Dla Swifty Developer -
yourButton.adjustsImageWhenHighlighted = false