2012-05-24 24 views
10

Así que tiene el código siguiente para establecer el color de fondo segmentado de control:ajuste de imagen de fondo de UISegmentedControl

UISegmentedControl * segmentedCtrl = [[UISegmentedControl alloc] initWithFrame:CGRectMake(0, 0, 150, 35)]; 
[segmentedCtrl setBackgroundImage:[UIImage imageNamed:@"btn-gradient-brown"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[segmentedCtrl setBackgroundImage:[UIImage imageNamed:@"btn-gradient-brown"] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 
[segmentedCtrl insertSegmentWithImage:[UIImage imageNamed:@"icon-home.png"] atIndex:0 animated:NO]; 
[segmentedCtrl insertSegmentWithImage:[UIImage imageNamed:@"icon-star.png"] atIndex:1 animated:NO]; 

Todo funciona bien, excepto que cuando hago clic en el segmento puedo ver el botón azul resaltado. ¿Cómo desactivo este resaltado? Aquí hay una captura de pantalla de mi problema:

enter image description here

Respuesta

14

UISegmentControl tiene un divisor entre dos segmentos. Al usar el siguiente código, puede cambiar el fondo del divisor.

[segmentedCtrl setDividerImage:[UIImage imageNamed:@"divider_selected.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[segmentedCtrl setDividerImage:[UIImage imageNamed:@"divider_normal.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

Donde divider_selected.png es una imagen que ha utilizado para el estado seleccionado. Donde como divider_normal.png es una imagen que usaste para el estado normal.

Esperamos que esto ayude ....

+0

lo que sería el tamaño de la imagen divisor de ?? – Nil

+0

Tenía 5 × 56. En esta altura puede variar según la altura de control de su segmento. – Nandha

+0

¡Lo estoy haciendo, pero el marco de mi segmentedCtrl se amplía en 5 píxeles! ¿Qué estoy haciendo mal? ¿Hay * requisitos * para la imagen del divisor (como transparencia, etc.)? – Gik

2

estilo a tus mismas imágenes de fondo para el estado resaltado:

[segmentedCtrl setBackgroundImage:[UIImage imageNamed:@"btn-gradient-brown"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 
+4

hizo esto .. no funcionaba – adit