UIButton - на ощупь изменить изображение - PullRequest
14 голосов
/ 18 апреля 2011

Когда я в это время касаюсь кнопки, я хочу изменить изображение, и когда я отпускаю изображение сенсорной кнопки, оно остается прежним.

Я хочу применить приведенный ниже код, но это не соответствует моим ожиданиям.

пожалуйста, дайте мне любое предложение .....

   -(IBAction)actionEnter:(id)sender{
            if ([sender isSelected]) {
                [sender setImage:[UIImage imageNamed:@"enter-hover.png"] 
                        forState:UIControlStateNormal];
                [sender setSelected:NO];
            } else {
                [sender setImage:[UIImage imageNamed:@"enter.png"] 
                        forState:UIControlStateSelected];
                [sender setSelected:YES];
            }

Ответы [ 6 ]

14 голосов
/ 18 апреля 2011

Для этого вы можете использовать UIControlStateHighlighted.

[myButton setImage:[UIImage imageNamed:@"enter-hover.png"] 
          forState:UIControlStateHighlighted];

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

6 голосов
/ 18 апреля 2011

Я думаю, что это должно сделать это.Установите изображения после создания кнопки

[yourButton setImage:[UIImage imageNamed:@"enter-hover.png"] 
            forState:UIControlStateSelected];
[yourButton setImage:[UIImage imageNamed:@"enter.png"]  
            forState:UIControlStateNormal];

и сделайте это

- (IBAction)actionEnter:(id)sender{
    UIButton *button = (UIButton *)sender;
    button.selected = !button.selected;
}
1 голос
/ 20 июня 2016

В Свифт:

button.setImage(UIImage(named: "enter.png"), forState: [.Selected, .Highlighted])

1 голос
/ 18 апреля 2011

Я думаю, вы могли бы установить изображение в начале для нормального и выбранного состояния.

Попробуйте создать нижеприведенное при создании объекта UIButton. [Используйте изображения согласно вашему требованию]

[myButton setImage:[UIImage imageNamed:@"enter.png"] 
          forState:UIControlStateNormal];
[myButton setImage:[UIImage imageNamed:@"enter-hover.png"] 
          forState:UIControlStateSelected];
0 голосов
/ 03 декабря 2013

@ 7KV7 заставило меня задуматься. У меня есть избранные и игнорируемые кнопки, которые я хочу использовать для отметки любимых картинок и картинок, которые я больше никогда не хочу видеть. Я использовал его метод для инициализации кнопок, а затем немного изменил его метод для включения и выключения кнопок.

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

 self.favoriteButton = [UIButton buttonWithType:UIButtonTypeCustom];
        self.ignoreButton   = [UIButton buttonWithType:UIButtonTypeCustom];

        [self.favoriteButton setImage:[UIImage imageNamed:@"Favorite-Selected"] 
                             forState:UIControlStateSelected];
        [self.favoriteButton setImage:[UIImage imageNamed:@"Favorite"] 
                             forState:UIControlStateNormal];

        [self.ignoreButton setImage:[UIImage imageNamed:@"Ignore-Selected"] 
                           forState:UIControlStateSelected];
        [self.ignoreButton setImage:[UIImage imageNamed:@"Ignore"] 
                           forState:UIControlStateNormal];

Если вы просто включаете или выключаете кнопку, вам не нужно делать это свойством, поскольку отправитель buttonPressed знает, какая кнопка была нажата. Мне нужно, чтобы они были собственностью, поскольку я должен сказать противоположной кнопке выключить ее подсветку.

- (void)favoriteIgnore:(UIButton *)buttonPressed {

     // Toggle the tapped button
     buttonPressed.selected = ( buttonPressed.selected) ?  NO : YES;

    id <ScoringToolbarDelegate> TB_delegate = _delegate;

    // Turn off the other button and call the delegate
    if ([buttonPressed.currentTitle isEqualToString:@"favorite"]) {

        self.ignoreButton.selected = NO;
        [TB_delegate favoriteButtonPressed];

    } else {

        self.favoriteButton.selected = NO;
        [TB_delegate ignoreButtonPressed];
    }
}
0 голосов
/ 18 апреля 2011

для немедленного изменения изображения используйте свойство backgroundImage.

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