Cómo cambiar el radio de la esquina de UISegmentedControl?

Es posible cambiar el radio de la esquina de UISegmentedControl? He probado el siguiente enfoque que utilizamos para cambiar un UIView del radio de la esquina.

    self.segmentedControl.layer.cornerRadius = 15.0;
    self.segmentedControl.layer.masksToBounds = YES;

Esto no funcionó como se puede ver sólo corta el UISegmentedControl de la esquina.
Cómo cambiar el radio de la esquina de UISegmentedControl?

Gracias!

InformationsquelleAutor wz366 | 2014-04-26

9 Kommentare

  1. 97

    Esto debería funcionar:

    self.segmentedControl.layer.cornerRadius = 15.0;
    self.segmentedControl.layer.borderColor = [UIColor whiteColor].CGColor;
    self.segmentedControl.layer.borderWidth = 1.0f;
    self.segmentedControl.layer.masksToBounds = YES;

    Necesita especificar la frontera después de establecer cornerRadius.

    • esta es la solución correcta!
    • Esto sólo funciona si usted desea aumentar la cornerRadius
    • No soluciona el problema inicial con sólo las esquinas de ser cortado. Véase mi respuesta a continuación.
    • Para Swift: auto.la capa.cornerRadius = 15.0; auto.la capa.borderColor = UIColor.blanco.cgColor; auto.la capa.borderWidth = 1.0; auto.la capa.masksToBounds = true;
  2. 33

    Incrustar UISegmentedControl dentro de UIView y set radio de la esquina para UIView.

    Objective-C

    outerView.layer.cornerRadius = CGRectGetHeight(outerView.bounds) / 2;
    outerView.layer.borderColor = [UIColor blueColor].CGColor;
    outerView.layer.borderWidth = 1;

    Swift

    outerView.layer.cornerRadius = CGRectGetHeight(outerView.bounds) / 2
    outerView.layer.borderColor = UIColor.blueColor().CGColor
    outerView.layer.borderWidth = 1

    Cómo cambiar el radio de la esquina de UISegmentedControl?

    • y no te olvides de añadir Clip de subvistas a UIView en el storyboard
    • esta es la solución correcta
  3. 10

    La segmentación de control no va a cambiar la forma en que se dibuja sus esquinas, por lo que se sigue elaborando sus rincones en su propia manera y, a continuación, cortándolos. Usted no está a cargo de cómo una segmentación de control dibuja su contorno de forma. Si realmente no te gusta la forma en que se dibuja, tendrás que diseñar tu propio sustituir el control desde el principio. Lo más cercano que puede legítimamente venir a la clase de cosa que usted está tratando de hacer es establecer la segmentación de control del fondo de la imagen.

  4. 5

    Actualizado para Swift 3 & Xcode 8.2 compatibilidad

        mySegmentedControl.layer.cornerRadius = 25.0
        mySegmentedControl.layer.borderColor = UIColor.white.cgColor
        mySegmentedControl.layer.borderWidth = 1.0
        mySegmentedControl.layer.masksToBounds = true
  5. 4

    Su resultado es debido a algo otro (dibujo personalizadas?) los controles de la frontera y no la capa. Por suerte parece que la configuración de capa tienen prioridad.

    Si usted sabe lo que el color del borde que usted necesita, usted puede simplemente agregar (ejemplo):

    self.segmentedControl.layer.borderColor = [UIColor whiteColor].CGColor;
    self.segmentedControl.layer.borderWidth = 1.0;
    • ¿cómo cambiar la radio de la esquina?
    • Esto no cambia el radio de la esquina. Sólo los suplementos de la original código publicado en la pregunta para obtener el resultado esperado.
  6. 4

    Las soluciones anteriores nunca trabajó para mí. Mi solución es:

    Para incrustar el UISegmentedControl dentro de un superview, a continuación, asignar -1 a las limitaciones principales, detrás de, arriba, abajo, en el fin de cortar la UISegmentedControl frontera.
    Finalmente el superview debe ser configurado de esta manera:

    segmentedControl.superview.clipsToBounds = true
    segmentedControl.superview.layer.cornerRadius = 0 //whatever
    segmentedControl.superview.layer.borderWidth = 1
    segmentedControl.superview.layer.borderColor = segmentedControl.tintColor.CGColor
    • bueno jugaarr 🙂
  7. 3

    Este es un convertido y código de trabajo para Swift y Xcode 4.1 9.3 de Yakiv del post.

    segmentedOuterView.layer.cornerRadius = segmentedOuterView.bounds.height / 2
    segmentedOuterView.layer.borderColor = UIColor.red.cgColor
    segmentedOuterView.layer.borderWidth = 1
    segmentedOuterView.layer.masksToBounds = true
  8. 1

    Utilice el siguiente código :

    segmentContrl.layer.borderColor=*anycolor*.CGColor;
    segmentContrl.layer.cornerRadius = 0.0;
    segmentContrl.layer.borderWidth = 1.5f;
    • funcionó para mí
    • Esto suele trabajo . Proporcionar su código, así que puedo mirar en él !
    • No funciona para mí ni
    • Consulte con algún valor para el radio de la esquina – segmentContrl.la capa.cornerRadius = 3.0;
  9. 0

    Es posible sin layer. Usted puede tratar de

    segmentedControl.borderColor = UIColor.line
    segmentedControl.borderWidth = 1
    segmentedControl.cornerRadius = 8

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea