如何防止UISegmentedControl的背景颜色超出分段边界

时间:2013-12-11 19:30:06

标签: ios uisegmentedcontrol

我注意到当我为UISegmentedControl.backgroundColor设置颜色时,颜色会超出控件的边缘(尽管不会超出视图的边界)。下面是一个示例,将分段控件的背景颜色设置为白色,容器视图的背景颜色设置为灰色:http://i.imgur.com/yHYT14C.png

我已经设置了分段控件的AutoLayout约束,因此应该使用intrinsicContentSize,但我还没有看到其他人发布有关此问题的信息

请注意,上面的图片是我能够看到的最好的图像......在此之前,它的流量大约是3-4px。

我已经尝试将视图配置为clipSubviews,并将支持UIView的图层配置为masksToBounds,但我没想到会解决问题,因为我认为出血包含在视图的/图层边界内。

任何建议或建议表示赞赏。如果不是,我只需要创建图像来支持修复流血的UISegmentedControl,但至少可以说要维护是烦人的。

3 个答案:

答案 0 :(得分:71)

将线段控制图层圆角半径设置为4.0。它应该有所帮助。您可能需要导入QuartzCore才能访问图层的属性。

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

答案 1 :(得分:9)

将线段控制图层圆角半径设置为5.并将ClipsToBounds设置为YES。

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

希望它为你工作

答案 2 :(得分:3)

我在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