#iphone #objective-c #cocoa-touch #uibutton
#iPhone #objective-c #cocoa-touch #uibutton
Вопрос:
У меня UIButton
есть, и я установил его с помощью:
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *imageNormal = [UIImage imageNamed:@"normal.png"];
UIImage *imageNormalHover = [UIImage imageNamed:@"normalHover.png"];
UIImage *imageSelected = [UIImage imageNamed:@"selected.png"];
UIImage *imageSelectedHover = [UIImage imageNamed:@"selectedHover.png"];
[myButton setImage:imageNormal forState:UIControlStateNormal];
[myButton setImage:imageSelected forState:UIControlStateSelected];
if (boolVar) {
[myButton setSelected:YES];
[myButton setImage:imageSelectedHover forState:UIControlStateHighlighted];
} else {
[myButton setImage:imageNormalHover forState:UIControlStateHighlighted];
}
Проблема в том, что когда состояние нормальное, и я пытаюсь нажать кнопку, я вижу изображение правильно normalHover.png
, но когда выбрано состояние, и я пытаюсь нажать кнопку, я вижу все еще normalHover.png
, а не selectedHover.png
. Кажется, что UIButton
я не могу изменить выделенное изображение. Как вы решаете?
Ответ №1:
Вам нужно установить изображение для UIControlStateSelected | UIControlStateHighlighted
объединенного состояния:
[myButton setImage:imageSelectedHover forState:(UIControlStateSelected | UIControlStateHighlighted)];
Потому что оба состояния включены, когда кнопка выбрана, и вы подсвечиваете ее, нажимая на нее.
Ответ №2:
В swift это делается с помощью union
:
myButton.setImage(imageSelectedHover, forState: UIControlState.Selected.union(UIControlState.Highlighted))