2011-02-23 13 views
6

creé una UISwitch utilizando este código ...¿Cómo personalizar el botón UISwitch en iphone?

UISwitch *switch = [[UISwitch alloc]initWithFrame:CGRectMake(110, 230, 60, 60)]; 
[window addSubview:switchView]; 
[switchView release]; 

El botón creado será ....

enter image description here

Las propiedades por defecto son,

  1. Contiene "ON" & "DESACTIVADO "estados
  2. el botón de apagado es blanco & el botón de encendido está en azul de color

Quiero crear un interruptor personalizado, por lo que el texto color de fondo & en el interruptor debe ser cambiado . ¿Es posible? Por favor explique en detalle.

Gracias de antemano,

Rajkanth

Respuesta

20

No se puede modificar el control UISwitch a menos que y hasta que usted escribe su propio control,

Pero mejor manera hasta ahora, se puede utiliza UISegmentControl y manejar eventos en para cambiar las imágenes on.png y off.png.

UISegmentedControl* switchView=[[UISegmentedControl alloc] initWithItems:[[[NSMutableArray alloc] initWithObjects:@"On",@"Off",nil] autorelease]]; 
    [switchView setFrame:CGRectMake(20,365,140,28)]; 
    switchView.selectedSegmentIndex=0; 
    switchView.segmentedControlStyle=UISegmentedControlStyleBar; 
    [switchView setImage:[UIImage imageNamed:@"onSelected.png"] forSegmentAtIndex:0]; 
    [switchView setImage:[UIImage imageNamed:@"off.png"] forSegmentAtIndex:1]; 
    [switchView addTarget:self action:@selector(checkOnOffState:) forControlEvents:UIControlEventValueChanged]; 

    self.navigationItem.titleView=switchView;

y escribir checkOnOffState código del método así-

-(IBAction)checkOnOffState:(id)sender{ 

    UISegmentedControl* tempSeg=(UISegmentedControl *)sender; 
    if(tempSeg.selectedSegmentIndex==0){ 
     [tempSeg setImage:[UIImage imageNamed:@"onSelected.png"] forSegmentAtIndex:0]; 
     [tempSeg setImage:[UIImage imageNamed:@"off.png"] forSegmentAtIndex:1]; 
    } 
    else{ 
     [tempSeg setImage:[UIImage imageNamed:@"on.png"] forSegmentAtIndex:0]; 
     [tempSeg setImage:[UIImage imageNamed:@"offSelected.png"] forSegmentAtIndex:1]; 
    } 
}
+1

¿cuál es la diferencia entre la imagen onSelected.png y la imagen on.png? ¿El bit "seleccionado" es el mando real y el on/off.png es la pista? –

+0

Gracias .. Funciona –

+0

+1 por la respuesta correcta y la dirección ..... Sigue haciendo lo bueno ....... – Sabby

2

que utiliza esta solución: UICustomSwitch: funciona personalizar un UISlider y el establecimiento de un máximo de 1. valure

Se puede cambiar el imágenes de su interruptor, el texto derecho/izquierdo y utilícelo con un color único en el fondo (si no desea usar imágenes).

El único cambio que hice fue sobre el nombre: la IU está reservada para la clase de Apple, así que la cambié por la mía.

Cuestiones relacionadas