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.
}
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.