Ответы:
Ваша кнопка должна иметь buttonType
значение Custom.
В IB вы можете снять флажок «Подсветка настраивает изображение».
Программно вы можете использовать theButton.adjustsImageWhenHighlighted = NO;
Аналогичные параметры доступны и для «отключенного» состояния.
В дополнение к вышеприведенному ответу о снятии отметки «выделение корректирует изображение» в IB, убедитесь, что тип кнопки установлен CUSTOM.
Это будет работать для вас:
[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];
3-я строка - это трюк здесь ...
Это работает так же для установки изображения / backgroundImage
adjustsImageWhenHighlighted
Свойство , UIButton
кажется, затрагивает только фоновое изображение.
В зависимости от того, что меняется с состояния по умолчанию на выделенное состояние кнопки, вы можете вызвать несколько методов, чтобы установить для них то, что вам нужно. Так что, если изображение меняется, вы можете сделать
[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Если текст меняется, вы можете сделать
[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
другие подобные функции:
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state
Хорошо, вот простое решение, если это сработает для вас, после недели, потрясенной моей головой, мне наконец пришло в голову просто установить выделенное = НЕТ для 1-й строки метода IBAction для TouchUpInside или TouchDown, или как там работает. Для меня это было нормально на TouchUpInside.
-(IBAction)selfDismiss:(id)sender {
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
}
Для разработчиков Swifty -
yourButton.adjustsImageWhenHighlighted = false