Verificamos profundamente cada secciones de nuestra web con el objetivo de enseñarte en todo momento información más veraz y actual.
Solución:
Lo que debes entender es el backgroundColor
la propiedad no tiene estado. Por lo tanto, tienes que usar setBackgroundImage(_:for:barMetrics:)
.
Podemos eliminar fácilmente tanto los bordes como los divisores usando la siguiente función.
Para Swift 3 y 4+:
extension UISegmentedControl
func removeBorders()
setBackgroundImage(imageWithColor(color: backgroundColor ?? .clear), for: .normal, barMetrics: .default)
setBackgroundImage(imageWithColor(color: tintColor!), for: .selected, barMetrics: .default)
setDividerImage(imageWithColor(color: UIColor.clear), forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
// create a 1x1 image with this color
private func imageWithColor(color: UIColor) -> UIImage
let rect = CGRect(x: 0.0, y: 0.0, width: 1.0, height: 1.0)
UIGraphicsBeginImageContext(rect.size)
let context = UIGraphicsGetCurrentContext()
context!.setFillColor(color.cgColor);
context!.fill(rect);
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image!
Para Swift 2.2:
extension UISegmentedControl
func removeBorders()
setBackgroundImage(imageWithColor(backgroundColor!), forState: .Normal, barMetrics: .Default)
setBackgroundImage(imageWithColor(tintColor!), forState: .Selected, barMetrics: .Default)
setDividerImage(imageWithColor(UIColor.clearColor()), forLeftSegmentState: .Normal, rightSegmentState: .Normal, barMetrics: .Default)
// create a 1x1 image with this color
private func imageWithColor(color: UIColor) -> UIImage
let rect = CGRectMake(0.0, 0.0, 1.0, 1.0)
UIGraphicsBeginImageContext(rect.size)
let context = UIGraphicsGetCurrentContext()
CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillRect(context, rect);
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image
Llame a la función anterior.
segmentedControl.removeBorders()
Referencia: elimine completamente los separadores de UISegmentedControl. (iPhone)
Gracias a https://stackoverflow.com/users/3921490/amagain por la versión Swift 3.
Aquí está la versión rápida 3 de la respuesta de Sohil que podría ayudar a alguien más. Me ayudó. 🙂
extension UISegmentedControl
func removeBorders()
setBackgroundImage(imageWithColor(color: backgroundColor!), for: .normal, barMetrics: .default)
setBackgroundImage(imageWithColor(color: tintColor!), for: .selected, barMetrics: .default)
setDividerImage(imageWithColor(color: UIColor.clear), forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
// create a 1x1 image with this color
private func imageWithColor(color: UIColor) -> UIImage
let rect = CGRect(x: 0.0, y: 0.0, width: 1.0, height: 1.0)
UIGraphicsBeginImageContext(rect.size)
let context = UIGraphicsGetCurrentContext()
context!.setFillColor(color.cgColor);
context!.fill(rect);
let image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image!
Espero que ayude a alguien
rápido – 4
Haga que el color de fondo y el color de tinte de su control de segmento sean del mismo color. Luego “establezca titleTextAttributes” de su control Segmento
segmentedControl.tintColor = UIColor.red
segmentedControl.backgroundColor = UIColor.red
let attributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
segmentedControl.setTitleTextAttributes(attributes, for: .normal)
segmentedControl.setTitleTextAttributes(attributes, for: .selected)
Al final de todo puedes encontrar los comentarios de otros gestores de proyectos, tú también eres capaz dejar el tuyo si lo deseas.