2010-02-12 16 views
58

¿Hay ya sea una forma de implementar UISwitch con gráficos personalizados para los interruptores-estados? O como alternativa al revés, ¿un UIButton con funcionalidad UISwitch?iPhone UIButton con funcionalidad UISwitch

+5

Quien votó para cerrar esta cuestión como un duplicado exacto, al menos debe proporcionar un comentario explicando cual es enviar un duplicado de. – Jasarien

Respuesta

99

UIButton ya soporta una funcionalidad "interruptor".

Simplemente configure una imagen diferente en el Interface Builder para la "Configuración de estado seleccionada" y use la propiedad selected de UIButton para alternar su estado.

+0

Vuelve a la normalidad después de tocar/seleccionar. Esto es lo que he hecho sin IB. \t [favButton setImage: favOff forState: UIControlStateNormal]; \t [favButton setImage: favOn forState: UIControlStateHighlighted]; \t [favButton setImage: favOn forState: UIControlStateSelected]; \t [favButton setBackgroundColor: [UIColor clearColor]]; \t \t [addSubview self.view: favButton]; – scud

+3

Ok "setSelected" era la propiedad que estaba buscando, gracias – scud

+0

El UISwitch anima muy bien su cambio de estado. Me pregunto cómo animar un UIButton cambio de estado. ¿Algunas ideas? – radven

12

establecer la imagen para mostrar el estado seleccionado:

[button setImage:[UIImage imageNamed:@"btn_graphics"] forState:UIControlStateSelected]; 

y luego en contacto en el interior del selector, establece:

button.selected = YES; 

si desea que esta para cancelar la selección de otro botón, establecer:

otherButton.selected = NO; 
7

Para construir sobre lo que dijeron PGB y nurne anteriormente, después de configurar sus estados y adjuntar un sele ctor (método de evento) le gustaría poner este código en ese selector.

- (IBAction)cost:(id)sender 
{ 
    //Toggle current state and save 
    self.buttonTest.selected = !self.buttonTest.selected; 

    /** 
    The rest of your method goes here. 
    */ 
} 
3

Para inclinado mediante programación:

-(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]; 
}