Cómo eliminar border de UISegmentController?

Quiero eliminar el borde de UISegmentController. Si es posible. de lo contrario, cambiarlo en el color del borde personalizado.

Captura de pantalla

Para cambiar el color y el text del control segmentado, testing que:

Objetivo-C :

NSArray *array = [segmentedControl subviews]; [[array objectAtIndex:2] setTintColor:[UIColor networkingColor]]; [[array objectAtIndex:1] setTintColor:[UIColor greenColor]]; [[array objectAtIndex:0] setTintColor:[UIColor blueColor]]; 

Swift :

 let array = segmentedControl.subviews array[2].tintColor = UIColor.networkingColor() array[1].tintColor = UIColor.greenColor() array[0].tintColor = UIColor.blueColor() 

Tenga en count que las subviews están en order inverso en relación con la interfaz del usuario.

Puede personalizar el borde de la misma manera:

 let array = segmentedControl.subviews array[0].layer.borderWidth = 5 // change thickness of border array[0].layer.cornerRadius = 4 //change corner radius 

Actualizar

Caso 1: Personalizar el borde de color de cada elemento en Control segmentado.

Código

 extension UIView { ///Add border color with corners func addBorderWithColor(color: UIColor, roundingCorners: UIRectCorner) { self.layer.borderWidth = 1 self.layer.borderColor = color.CGColor self.addRoundingCorners(roundingCorners) } ///Use corner radius depending on UIRectCorner private func addRoundingCorners(roundingCorners: UIRectCorner) { let path = UIBezierPath(roundedRect:self.bounds, byRoundingCorners:roundingCorners, cornerRadii: CGSizeMake(4, 4)) let maskLayer = CAShapeLayer() maskLayer.path = path.CGPath self.layer.mask = maskLayer } } let segmentedControl = UISegmentedControl(items: ["Red", "Green", "Blue"]) segmentedControl.subviews[0].addBorderWithColor(UIColor.blueColor(), roundingCorners: [.TopRight, .BottomRight]) segmentedControl.subviews[1].addBorderWithColor(UIColor.greenColor(), roundingCorners: []) segmentedControl.subviews[2].addBorderWithColor(UIColor.networkingColor(), roundingCorners: [.TopLeft, .BottomLeft]) segmentedControl.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.blackColor()], forState: UIControlState.Normal) 

Patio de recreo

Personalizar borderColor

Caso 2: deshacerse de las fronteras

Código

 let segmentedControl = UISegmentedControl(items: ["Red", "Green", "Blue"]) //Change Text Attributes (Changing textColor to black) //**Be sure to manage all the UIControlState for these attributes if you need to customize this for other states segmentedControl.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.blackColor()], forState: UIControlState.Normal) //Change tintColor to clear, in order to set border invisible segmentedControl.tintColor = UIColor.clearColor() 

Patio de recreo

Bordes transparentes

Respuesta original

La respuesta es NO
No puede eliminar el borde del UISegmentedControl

Puede crear un control personalizado utilizando los UIButton para lograr lo que está buscando.

En el estado de UISegmentedControl , puede eliminar los divisores entre los elementos del UISegmentedControl , o puede cambiar el tintColor (borderColor)

introduzca la descripción de la imagen aquí