UISegmentedControl con esquinas cuadradas

Me gustaría modificar UISegmentedControl con una subclass para eliminar las esquinas networkingondeadas. Parece que no pongo el cornerRadius. Hacer que el SegmentedControl sea más ancho que la pantalla (y por lo tanto "cortar" las esquinas) no es una opción, ya que tengo 4 o 5 segmentos y luego variarían de tamaño.

¿Hay alguna forma de hacer esto?

Gracias

Puede establecer el ancho de los segmentos (usando setWidth: forSegmentAtIndex:) para que pueda hacer que los segmentos finales izquierdo y derecho sean más grandes (por ejemplo, 10px más grandes) que los demás, y luego puede recortar 10px desde cualquier extremo y tener esquinas cuadradas. No tiene que hacerlo más grande que el ancho de la pantalla, sino que lo coloca dentro de una UIView y lo usa para recortar los extremos.

Por otro lado, simplemente podría hacer su propio control segmentado usando un set de UIBs personalizados dentro de un UIControl.

Para hacer que el cuadrado de la esquina use el siguiente código:

segmentContrl.layer.borderColor=*anycolor*.CGColor; segmentContrl.layer.cornerRadius = 0.0; segmentContrl.layer.borderWidth = 1.5f; 

Una alternativa, si "recortar" parte del primer y último segmento es problemático, puede ser recortar todo el primer y último segmento (en el que ha hecho los segmentos ficticios no utilizados). De esa forma, puede mantener un tamaño común para cada segmento.

Simplemente use los methods de personalización integrados y establezca una image de background para cada estado de segmento. Esto anulará por completo el borde. Si las imágenes de background son cuadradas, su control segmentado aparecerá cuadrado. Use el siguiente código para cada estado de segmento que desee personalizar.

[segmentedControl setBackgroundImage:[UIImage imageNamed:@"square-background-image-selected"] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];

Otra alternativa para lograr esto en el generador de interfaces:

Arrastre un object UIView a su UIViewController, esto puede ser una subvista de su UIView.

Arrastre un UISegmentedControl como una subvista de su UIView. El control segmentado ahora debe sangrarse en los objects UIViewController de la list. (ver la captura de pantalla a continuación).

Cambia el tamaño del SegementedControl para que su 'marco esté fuera de los límites de tu object UIView. En mi caso, establezco el marco del SegementedControl en X = -10 y agregué +20 al ancho del SegementedControl para que el ancho total del control segmentado sea 20 mayor que el object UIView. (con suerte, la captura de pantalla a continuación ayuda).

También ajusté las siguientes configuraciones para el object UIView y SegmentedControl: UIView: comtesting Clip SubViews, desactiva los Subviews AutoResize. SegementedControl: deselecciona Clip SubViews, desmarca las subidas de AutoResize.

introduzca la descripción de la imagen aquí