Respuestas:
Su botón debe estar buttonType
configurado en Personalizado.
En IB puede desmarcar "Resaltar ajusta imagen".
Programáticamente puedes usar theButton.adjustsImageWhenHighlighted = NO;
Opciones similares están disponibles para el estado "deshabilitado" también.
Además de la respuesta anterior de desmarcar "resaltar ajusta imagen" en IB, asegúrese de que el tipo de botón esté configurado como PERSONALIZADO.
Esto funcionará para usted:
[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 configurar imagen / backgroundImage
adjustsImageWhenHighlighted
propiedad de UIButton
parece afectar solo a la imagen de fondo.
Dependiendo de los cambios del estado predeterminado al botón resaltado, puede llamar a un par de métodos para configurarlos a lo que necesita. Entonces, si la imagen cambia, puedes hacer
[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Si el texto cambia, puedes hacerlo
[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
otras funciones similares:
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state
OK, aquí hay una solución fácil si esto funciona para usted, después de una semana de golpearme la cabeza con esto finalmente se me ocurrió establecer 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.
}
Para el desarrollador Swifty:
yourButton.adjustsImageWhenHighlighted = false