selectedsegmentindex segmented objective how example control change ios uisegmentedcontrol

ios - objective - Cómo prevenir el sangrado del color de fondo de UISegmentedControl más allá del borde segmentado



swift segmented control change view (3)

He notado que cuando configuro un color para UISegmentedControl.backgroundColor, el color sangra más allá de los bordes del control (aunque no más allá de los límites de la vista). Aquí hay un ejemplo con el color de fondo del control segmentado establecido en blanco y el color de fondo de la vista del contenedor configurado en gris:

He establecido las restricciones de AutoLayout del control segmentado para que se use el intrinsicContentSize, pero no he visto a nadie más publicando sobre este problema

Tenga en cuenta que la imagen de arriba es la mejor que he podido conseguir para que se vea ... antes de que sangrara alrededor de 3-4px.

He intentado configurar la vista en clipSubviews y la capa que respalda a UIView en masksToBounds, pero no esperaba que eso solucionara el problema, ya que supongo que el sangrado está contenido dentro de los límites de la vista / capa.

Cualquier sugerencia o consejo apreciado. Si no, solo tendré que crear imágenes para respaldar el control UISegmented que arregla la hemorragia, pero es molesto tener que mantener, por decir lo menos.


El mejor resultado que pude lograr en Swift:

segmentedControl.layer.cornerRadius = 4 let mask = CAShapeLayer() mask.frame = CGRectMake(0, 0, segmentedControl.bounds.size.width-1, segmentedControl.bounds.size.height); let maskPath = UIBezierPath(roundedRect: mask.frame, byRoundingCorners: [.BottomLeft, .BottomRight, .TopLeft, .TopRight], cornerRadii: CGSize(width: 4.0, height: 4.0)) mask.path = maskPath.CGPath segmentedControl.layer.mask = mask


Establezca el radio de esquina de la capa de control de segmento en 4.0. Debería ayudar. Es posible que deba importar QuartzCore para poder acceder a las propiedades de la capa.

segment.layer.cornerRadius = 4.0; segment.clipsToBounds = YES;


Establezca el radio de esquina de la capa de control de segmento en 5. y ClipsToBounds YES.

segmentController.layer.cornerRadius = 5; segmentController.clipsToBounds = YES;

Espero que sea trabajo para ti