2010-02-14 18 views

risposta

244

Il tuo pulsante deve avere il suo buttonType impostato su Personalizzato.

In IB è possibile deselezionare "Evidenzia regola immagine".

livello di programmazione è possibile utilizzare sono disponibili theButton.adjustsImageWhenHighlighted = NO;

opzioni simile per lo stato "disattivato" pure.

+1

Qualsiasi possibilità di sapere che cosa sarebbe la versione programmatica di questo? In questo momento ho lavorato su Hackish rendendolo disabilitato e vestendolo come selezionato. – kbanman

+94

uibutton.adjustsImageWhenHighlighted = NO; – Haydn

+33

Assicurati anche che il tipo di pulsante sia impostato su CUSTOM. (Come Mosib Asad menzionato in un'altra risposta) –

4

A seconda delle modifiche dallo stato predefinito allo stato evidenziato del pulsante, è possibile chiamare un paio di metodi per impostarli su ciò che è necessario. Quindi, se l'immagine cambia si può fare

[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted]; 

Se il testo cambia si può fare

[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted]; 

altre funzioni simili:

- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state

- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state

+0

setTitleColor è tutto ciò di cui avevo bisogno per disabilitare l'evidenziazione sul testo di uibutton – atulkhatri

3

OK Ecco un soluzione semplice se questo funziona per te, dopo un settimana di sbattere la testa su questo finalmente mi è venuto in mente di impostare solo evidenziato = NO per la prima linea del metodo IBAction per il TouchUpInside o TouchDown, o qualsiasi altra cosa funzioni. Per me andava bene su TouchUpInside.

-(IBAction)selfDismiss:(id)sender { 

    self.btnImage.highlighted = NO; 

    NSLog(@"selfDismiss"); 

    etc, etc, etc. 

} 
21
button.adjustsImageWhenDisabled = NO; 

è ugualmente utile per avere il proprio aspetto di un pulsante disattivato.

34

Questo funziona per voi:

[button setBackgroundImage:[UIImage imageNamed:@"button_image"] forState:UIControlStateNormal]; 
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected]; 
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected | UIControlStateHighlighted]; 

terza linea è il trucco ...

questo funziona lo stesso per l'impostazione di immagini/BackgroundImage

+1

Questo funziona perfettamente per me. La proprietà 'adjustsImageWhenHighlighted' di' UIButton' sembra influenzare solo l'immagine di sfondo. –

+0

Tieni presente che se decidi di assegnare un'immagine allo "stato disabilitato", non chiami setBackgroundImage. Invece, si dovrebbe fare il seguente [set di pulsanti Immagine: image forState: UIControlStateDisabled]; Inoltre, tenere presente che, come menzionato in questo thread, la proprietà adjustsImageWhenHighlighted UIButton esegue solo l'immagine di sfondo. – HamasN

26
adjustsImageWhenHighlighted = NO; 
33

Oltre al sopra risposta di deselezionare "evidenzia regola immagine" in IB, assicurarsi che il tipo di pulsante sia impostato su CUSTOM.

+2

Questo era il pezzo mancante: tipo di pulsante CUSTOM. Grazie! – JOM

+1

Cosa fare se si desidera mantenere un UIButton di sistema? non riesco a rimuovere l'evidenziazione regola l'immagine? –

-2

evitare di impostare Interruzione di riga di UIButton per clip, usare al posto dello standard Tronca Medio

enter image description here

2

solo due cose:

UIButton *btnTransparentComponent = [UIButton buttonWithType:UIButtonTypeCustom]; 
btnTransparentComponent.adjustsImageWhenHighlighted = NO; 
2

ho avuto un problema simile e ha rilevato che "deselezionando" il contenuto grafico di Clear nel builder dell'interfaccia ha risolto il problema

enter image description here

2

Per Swifty Developer -

yourButton.adjustsImageWhenHighlighted = false 
1

rendere il vostro pulsante Tipo - "Custom" e deselezionare - Evidenziato regolare l'immagine e si è fatto.

0

Swift 3+

button.adjustsImageWhenHighlighted = false 

button.adjustsImageWhenDisabled = false 
Problemi correlati