titlelabel color buttons iphone cocoa-touch image uibutton selected

iphone - color - menu ios



UIButton: establece la imagen para el estado resaltado seleccionado (12)

Configuré imágenes para los estados de botón Normal, Destacado y Seleccionado, pero cuando el botón está en estado seleccionado y presiono / lo resalto, no vi la imagen resaltada, sino la imagen en gris. ¿Es posible establecer una imagen para el estado resaltado cuando se selecciona el botón?

mi código:

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

Cuando lo hago:

[button setSelected:YES];

y presione el botón, la imagen "presionada.png" no selecciona.


Corrígeme si estoy equivocado. Haciendo

[button setSelected:YES];

está cambiando claramente el estado de los botones según lo seleccionado. Así que, naturalmente, con el código que ha proporcionado la imagen será para el estado seleccionado en su caso checked.png


Creo que la mayoría de los carteles aquí se pierden el punto por completo. Yo tuve el mismo problema. La pregunta original era sobre el estado Destacado de un botón Seleccionado (COMBINAR AMBOS ESTADOS) que no se puede configurar en IB y vuelve al estado Predeterminado con algo de oscurecimiento. Solo solución de trabajo como una publicación mencionada:

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


Desde donde quieres llamar

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

El método:

-(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; } }

Crédito por encima de Jorge pero lo mejoré un poco dando la solución de trabajo completa


En Swift 3.x, puede configurar la imagen resaltada cuando se selecciona el botón de la siguiente manera:

// Normal state button.setImage(UIImage(named: "normalImage"), for: .normal) // Highlighted state (before button is selected) button.setImage(UIImage(named: "pressedImage"), for: .highlighted) // Selected state button.setImage(UIImage(named: "selectedImage"), for: .selected) // Highlighted state (after button is selected) button.setImage(UIImage(named: "pressedAfterBeingSelectedImage"), for: UIControlState.selected.union(.highlighted))


En swift puedes hacer:

button.setImage(UIImage(named: "selected"), forState: UIControlState.selected.union(.highlighted))


Encontré la solución: necesito agregar una línea adicional

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


He tenido problemas para configurar imageView.highlighted = NO; (El ajuste funcionó correctamente y la imagen cambió al resaltado).

La solución llamaba [imageView setHighlighted:NO];

Todo funcionó correctamente


Puedes hacer esto en Interface Builder.

Seleccione el UIButton que desea configurar en IB luego vaya al attributes inspector .

En las capturas de pantalla, estoy usando un tipo de botón personalizado, pero eso no importa.


Si alguien se pregunta cómo funciona esto en Swift, esta es mi solución:

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)


Si tienes una buena razón para hacerlo, esto hará el truco

agregar estos objetivos:

[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+

button.setImage(UIImage(named: "selected_image"), for: [.selected, .highlighted])

O

button.setImage(UIImage(named: "selected_image"), for: UIControlState.selected.union(.highlighted))

Significa que la corriente del botón en el estado selected , luego lo toca, muestra el estado highlight .


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

Para establecer la imagen de fondo, podemos usar 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])