Domanda

C'è sia un modo per implementare UISwitch con grafica personalizzata per lo switch-stato? O in alternativa il contrario, un UIButton con funzionalità UISwitch?

È stato utile?

Soluzione

UIButton supporta già una funzionalità di "switch".

Situato a soli un'immagine diversa in Interface Builder per la "Configurazione Stato Selected", e utilizzare la proprietà selected di UIButton per cambiarne lo stato.

Altri suggerimenti

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 detto sopra, dopo aver impostato i vostri stati e allegare un selettore (metodo di evento) che si vorrebbe 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];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top