2010-02-12 24 views
58

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

+5

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

risposta

99

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.

+0

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

+3

Ok "setSelected" era la proprietà che stavo cercando, grazie – scud

+0

L'UISwitch anima animatamente il suo cambiamento di stato. Mi chiedo come animare uno stato mutevole di UIButton. Qualche idea? – radven

12

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

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. 
    */ 
} 
3

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]; 
} 
Problemi correlati