titlelabel color buttons ios cocoa-touch uibutton uikit uicontrol

ios - color - ¿Cómo deshabilitar el estado de control de resaltado de un UIButton?



titlelabel swift (13)

Además de la respuesta anterior al desmarcar "resaltar ajusta la imagen" en IB, asegúrese de que el tipo de botón esté configurado CUSTOM.

Tengo un UIButton que, cuando se selecciona, no debe cambiar de estado cuando se toca. El comportamiento predeterminado es que esté en UIControlStateHighlighted mientras se toca, y esto me enoja.

Sugerencias?


Dependiendo de los cambios del estado predeterminado al estado resaltado del botón, puede llamar a un par de métodos para configurarlos según lo que necesita. Entonces, si la imagen cambia puedes hacer

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

Si el texto cambia puedes hacer

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

otras funciones similares:

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

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


Esto funcionará para ti:

[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];

La tercera línea es el truco aquí ...

Esto funciona igual para establecer la imagen / backgroundImage


OK, aquí hay una solución fácil, si esto funciona para ti, después de una semana de golpearme la cabeza con esto, finalmente se me ocurrió establecer simplemente resaltado = NO para la primera línea del método IBAction para TouchUpInside o TouchDown, o lo que sea que funcione. Para mí, estuvo bien en TouchUpInside.

-(IBAction)selfDismiss:(id)sender { self.btnImage.highlighted = NO; NSLog(@"selfDismiss"); etc, etc, etc. }


Tuve un problema similar y descubrí que "desmarcar" borra el contenido gráfico en el generador de interfaz me solucionó el problema


evite configurar el salto de línea de UIButton para recortar, use en su lugar el Truncado Medio estándar


haga que su botón escriba - "Personalizar" y desmarque - Resalte Ajustar imagen y listo.


solo dos cosas:

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


Para el desarrollador Swifty -

yourButton.adjustsImageWhenHighlighted = false


Swift 3+

button.adjustsImageWhenHighlighted = false button.adjustsImageWhenDisabled = false


Su botón debe tener su buttonType configurado en Custom.

En IB puede desmarcar "Resaltar ajusta la imagen".

Programáticamente puede usar theButton.adjustsImageWhenHighlighted = NO;

Las opciones similares están disponibles para el estado "deshabilitado" también.


adjustsImageWhenHighlighted = NO;


button.adjustsImageWhenDisabled = NO;

es igualmente útil para tener su propia apariencia de un botón desactivado.