Как установить изображение кнопки для UIControlStateSelected - PullRequest
1 голос
/ 21 августа 2011

Привет. Я хочу изменить фон моей кнопки после нажатия кнопки, т.е. кнопка не должна возвращаться к предыдущему изображению.

Однако я не могу этого сделать.Мой код выглядит следующим образом.Кто-нибудь может посоветовать, как я могу изменить изображение на "custom_button_highlight" после того, как я нажму на кнопку?

UIImage *buttonImageNormal = [UIImage imageNamed:@"custom_button"];
UIImage *stretchableButtonImageNormal = [buttonImageNormal
                                         stretchableImageWithLeftCapWidth:12 topCapHeight:0];

UIImage *buttonImagePressed = [UIImage imageNamed:@"custom_button_highlight"];
UIImage *stretchableButtonImagePressed = [buttonImagePressed
                                          stretchableImageWithLeftCapWidth:12 topCapHeight:0];

button.titleLabel.font = [UIFont boldSystemFontOfSize:14];
[button setBackgroundImage:stretchableButtonImageNormal
                  forState:UIControlStateNormal];

[button setBackgroundImage:stretchableButtonImagePressed
                  forState:UIControlStateHighlighted];

[button setBackgroundImage:stretchableButtonImagePressed
                  forState:UIControlStateSelected];

Ответы [ 3 ]

6 голосов
/ 21 августа 2011

method1

Я вижу, что вы используете код для генерации UIButton. Проще использовать Интерфейсный конструктор. Попробуйте это - в Интерфейсном конструкторе (Xcode4) создайте кнопку и откройте правую боковую панель. После этого выберите кнопку и тип кнопки как custom. После этого в state config существуют различные состояния, для каждого состояния вы можете установить изображение в image. Надеюсь, это поможет ...

enter image description here

method2

Если вы хотите использовать код для генерации UIButton (меня это беспокоит, почему), то вы, кажется, поступаете правильно. Вы уверены, что изображения есть в вашем комплекте? Вы не включили расширение изображения (например, .jpg и т. Д.)

1 голос
/ 21 августа 2011

Вы упомянули, что вы не хотите, чтобы изображение вернулось обратно ... затем вместо того, чтобы устанавливать его для выделенных или выбранных состояний, вы должны установить его для состояния UIControlStateNormal.

Но так как он вам нужен после нажатия, вы должны отловить событие, когда была нажата ваша кнопка, и установить там фоновое изображение.

Надеюсь, это помогло;)

0 голосов
/ 21 ноября 2012
[_buttonConfirm setImage:[UIImage imageNamed:@"s.png"] forState:UIControlStateSelected ];

... делает то, что вы хотите программно, а не фоновое изображение.Но я думаю, что вы должны следовать за ответом Срикара и использовать конструктор интерфейса, если можете.

...