Esiste un modo per implementare UISwitch con grafica personalizzata per gli stati di commutazione? Oppure come alternativa al contrario, un UIButton con funzionalità UISwitch?iPhone UIButton con funzionalità UISwitch
risposta
UIButton
supporta già una funzionalità "switch".
È sufficiente impostare un'immagine diversa in Interface Builder per "Configurazione stato selezionato" e utilizzare la proprietà selected
di UIButton
per alternarne lo stato.
Torna alla normalità dopo aver toccato/selezionato. Questo è quello che ho fatto senza IB. \t [setBitButton setImage: favOff forState: UIControlStateNormal]; \t [set set fav.Image: favOn perStato: UIControlStateHighlighted]; \t [setSettButton setImage: favOn perStato: UIControlStateSelected]; \t [favButton setBackgroundColor: [UIColor clearColor]]; \t \t [self.view addSubview: favButton]; – scud
Ok "setSelected" era la proprietà che stavo cercando, grazie – scud
L'UISwitch anima animatamente il suo cambiamento di stato. Mi chiedo come animare uno stato mutevole di UIButton. Qualche idea? – radven
impostare l'immagine per mostrare sullo stato selezionato:
[button setImage:[UIImage imageNamed:@"btn_graphics"] forState:UIControlStateSelected];
e poi sul tocco dentro di selezione, impostare:
button.selected = YES;
se si desidera che questo per annullare la selezione di un altro pulsante, impostare:
otherButton.selected = NO;
Per costruire su ciò che PGB e nurne hanno detto sopra, dopo aver impostato i tuoi stati e allegare un sele ctor (metodo evento) vorresti inserire questo codice in quel selettore.
- (IBAction)cost:(id)sender
{
//Toggle current state and save
self.buttonTest.selected = !self.buttonTest.selected;
/**
The rest of your method goes here.
*/
}
Per programmazione inclinata:
-(void) addToggleButton {
CGRect aframe = CGRectMake(0,0,100,100);
UIImage *selectedImage = [UIImage imageNamed:@"selected"];
UIImage *unselectedImage = [UIImage imageNamed:@"unselected"];
self.toggleUIButton = [[UIButton alloc] initWithFrame:aframe];
[self.toggleUIButton setImage:unselectedImage forState:UIControlStateNormal];
[self.toggleUIButton setImage:selectedImage forState:UIControlStateSelected];
[self.toggleUIButton addTarget:self
action:@selector(clickToggle:)
forControlEvents:UIControlEventTouchUpInside];
[self addSubview:self.toggleUIButton];
}
-(void) clickToggle:(id) sender {
BOOL isSelected = [(UIButton *)sender isSelected];
[(UIButton *) sender setSelected:!isSelected];
}
Chi ha votato per chiudere questo problema come un duplicato esatto, si dovrebbe almeno fornire un commento spiegando che post Esso è un duplicato di. – Jasarien