Existe-t-il un moyen d'implémenter UISwitch avec des graphiques personnalisés pour les états de commutation? Ou à l'inverse, une fonctionnalité UIButton avec UISwitch?UIButton iPhone avec fonctionnalité UISwitch
Répondre
UIButton
prend déjà en charge une fonctionnalité de «commutateur». Il suffit de définir une image différente dans Interface Builder pour la "Configuration d'état sélectionnée" et d'utiliser la propriété selected
de UIButton
pour basculer son état.
Il revient à la normale après avoir tapé/sélectionné. C'est ce que j'ai fait sans IB. \t [favButton setImage: favOff pour l'état: UIControlStateNormal]; \t [favButton setImage: favOn forState: UIControlStateHighlighted]; \t [favButton setImage: favOn forState: UIControlStateSelected]; \t [favButton setBackgroundColor: [UIColor clearColor]]; \t \t [self.view addSubview: favButton]; – scud
Ok "setSelected" était la propriété que je cherchais, merci – scud
L'UISwitch anime bien son changement d'état. Je me demande comment animer un état changeant UIButton. Des idées? – radven
mis l'image à afficher sur l'état sélectionné:
[button setImage:[UIImage imageNamed:@"btn_graphics"] forState:UIControlStateSelected];
puis sur le toucher à l'intérieur de sélecteur, définissez:
button.selected = YES;
si vous voulez que cela annuler la sélection d'un autre bouton, définissez:
otherButton.selected = NO;
Pour construire sur ce que PGB et nurne ont dit ci-dessus, après avoir défini vos états et attacher un sele ctor (méthode d'événement) vous voudriez mettre ce code dans ce sélecteur.
- (IBAction)cost:(id)sender
{
//Toggle current state and save
self.buttonTest.selected = !self.buttonTest.selected;
/**
The rest of your method goes here.
*/
}
Pour programme incliné:
-(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];
}
Celui qui a voté pour fermer cette question une copie exacte, vous devez au moins fournir un commentaire expliquant quel poste il est un double de. – Jasarien