[iphone] UIButton: imposta l'immagine per lo stato evidenziato selezionato



Answers

Puoi farlo in Interface Builder.

Seleziona il UIButton che desideri impostare in IB quindi vai attributes inspector .

Nelle schermate, sto usando un tipo di pulsante personalizzato, ma non importa.

Question

Ho impostato le immagini per gli stati del pulsante Normale, Evidenziato e Selezionato, ma quando il pulsante nello stato selezionato e lo premo / evidenziamo non ho visto l'immagine evidenziata ma solo l'immagine in grigio. È possibile impostare un'immagine per lo stato evidenziato quando il pulsante selezionato?

il mio codice:

[button setImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateHighlighted];
[button setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateSelected];

quando io faccio:

[button setSelected:YES];

e premere il pulsante, l'immagine "pressed.png" non seleziona.




Swift 3

// Default state (previously `.Normal`)
button.setImage(UIImage(named: "image1"), for: [])

// Highlighted
button.setImage(UIImage(named: "image2"), for: .highlighted)

// Selected
button.setImage(UIImage(named: "image3"), for: .selected)

// Selected + Highlighted
button.setImage(UIImage(named: "image4"), for: [.selected, .highlighted])

Per impostare l'immagine di sfondo possiamo usare setBackgroundImage(_:for:)

Swift 2.x

// Normal
button.setImage(UIImage(named: "image1"), forState: .Normal)

// Highlighted
button.setImage(UIImage(named: "image2"), forState: .Highlighted)

// Selected
button.setImage(UIImage(named: "image3"), forState: .Selected)

// Selected + Highlighted
button.setImage(UIImage(named: "image4"), forState: [.Selected, .Highlighted])



Ho avuto problemi con l'impostazione imageView.highlighted = NO; (l'impostazione YES ha funzionato correttamente e l'immagine è cambiata in quella evidenziata).

La soluzione stava chiamando [imageView setHighlighted:NO];

Tutto ha funzionato correttamente.




Swift 3+

button.setImage(UIImage(named: "selected_image"), for: [.selected, .highlighted])

O

button.setImage(UIImage(named: "selected_image"), for: UIControlState.selected.union(.highlighted))

Significa che il pulsante corrente nello stato selected , quindi lo tocchi, mostra lo stato di highlight .




Correggimi se sbaglio Facendo

   [button setSelected:YES];

stai cambiando chiaramente lo stato dei pulsanti come selezionato. Quindi, naturalmente, il codice che hai fornito all'immagine sarà quello per lo stato selezionato nel tuo caso checked.png




In Swift 3.x, è possibile impostare l'immagine evidenziata quando il pulsante è selezionato nel seguente modo:

// Normal state
button.setImage(UIImage(named: "normalImage"), for: .normal) 

// Highlighted state (before button is selected)
button.setImage(UIImage(named: "pressedImage"), for: .highlighted)

// Selected state
button.setImage(UIImage(named: "selectedImage"), for:  .selected)

// Highlighted state (after button is selected)
button.setImage(UIImage(named: "pressedAfterBeingSelectedImage"), 
                for:  UIControlState.selected.union(.highlighted))



Related