iphone ios - UIButton:imposta l'immagine per lo stato evidenziato selezionato




uicontrol view (11)

Da dove vuoi chiamare

[button addTarget:self action:@selector(test:) forControlEvents:UIControlEventTouchUpInside];

Il metodo:

-(void)test:(id)sender{
    UIButton *button=(UIButton *)sender;
    if (_togon){
      [button setTitleColor:UIColorFromRGB(89,89, 89) forState:UIControlStateNormal];
      _togon=NO;
    }
    else{
      [button setTitleColor:UIColorFromRGB(28, 154, 214) forState:UIControlStateNormal];
      _togon=YES;
    }
}

Credito sopra a Jorge, ma l'ho migliorato un po 'dando la piena soluzione di lavoro

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.


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


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 .


Se hai una buona ragione per farlo, questo farà il trucco

aggiungi questi obiettivi:

[button addTarget:self action:@selector(buttonTouchDown:) forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(buttonTouchUp:) forControlEvents:UIControlEventTouchUpInside];


-(void)buttonTouchDown:(id)sender{
    UIButton *button=(UIButton *)sender;
    if(button.selected){
        [button setImage:[UIImage imageNamed:@"pressed.png"] forState:UIControlStateNormal];
    }
}

-(void)buttonTouchUp:(id)sender{
    UIButton *button=(UIButton *)sender;
    [button setImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
}

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])

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.


Penso che la maggior parte dei manifesti qui manchi completamente il punto. Ho avuto lo stesso problema. La domanda originale riguardava lo stato evidenziato di un pulsante selezionato (COMBINAZIONE DEGLI STATI) che non può essere impostato in IB e torna allo stato Predefinito con un po 'di oscuramento in corso. Solo una soluzione funzionante come un post menzionato:

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

Se qualcuno si sta chiedendo come funziona in Swift, ecco la mia soluzione:

button.setImage("normal.png", forState: .Normal)
button.setImage("highlighted.png", forState: .Highlighted)
button.setImage("selected.png", forState: .Selected)

var selectedHighLightedStates: UIControlState = UIControlState.Highlighted
selectedHighLightedStates = selectedHighLightedStates.union(UIControlState.Selected)
button.setImage("selectedHighlighted.png", forState: selectedHighLightedStates)

Ho trovato la soluzione: ho bisogno di aggiungere una linea aggiuntiva

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

Tu puoi fare

$('.myCheckbox').attr('checked',true) //Standards compliant

o

$("form #mycheckbox").attr('checked', true)

Se hai un codice personalizzato nell'evento onclick per la casella di controllo che desideri attivare, utilizza invece questo:

$("#mycheckbox").click();

Puoi deselezionare rimuovendo completamente l'attributo:

$('.myCheckbox').removeAttr('checked')

Puoi selezionare tutte le caselle di controllo come questa:

$(".myCheckbox").each(function(){
    $("#mycheckbox").click()
});






iphone cocoa-touch image uibutton selected