2012-05-29 17 views
5

Estoy utilizando imágenes de fondo y divisor para personalizar un UISegmentedControl. Sin embargo, aparece un espacio entre la imagen del divisor y la imagen de fondo para el control del segmento.UISegementedControl con imagen de divisor contiene espacio

Aquí hay una captura de pantalla que muestre los espacios

enter image description here

Y aquí está el código que estoy usando para fijar las imágenes segmento

UIImage *selectedImage = [[UIImage imageNamed:@"segcontrol_selectround.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)]; 
UIImage *unselectedImage = [[UIImage imageNamed:@"segcontrol_unselectround.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)]; 
UIImage *leftSelected = [UIImage imageNamed:@"segcontrol_leftselected.png"]; 
UIImage *rightSelected = [UIImage imageNamed:@"segcontrol_rightselected.png"]; 
UIImage *neitherSelected = [UIImage imageNamed:@"segcontrol_bothunselected.png"]; 

[segment setBackgroundImage:unselectedImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[segment setBackgroundImage:selectedImage forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 
[segment setDividerImage:leftSelected forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
[segment setDividerImage:rightSelected forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 
[segment setDividerImage:neitherSelected forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

he comprobado todas las imágenes del divisor, y son todos los mismos anchos y no contienen ningún pixel transparente.

¿Cómo elimino estos espacios del control segmentado?

+0

¿Podría agregar un poco más sobre los detalles de su implementación? ¿Estás usando UIAppearanceProxy, subclassing it? – Rexeisen

+0

@Rexeisen Agregué el código que estoy usando para establecer las imágenes de fondo – Paul

Respuesta

3

Asegúrese de que las imágenes que utiliza para los divisores (leftSelected, rightselected y neitherselected) tienen el mismo ancho. A menudo, porque neitherselected tiene la línea en el medio, es 1pt más ancha que las demás. ¡Todos necesitan ser lo mismo!

Cuestiones relacionadas