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