我注意到当我为UISegmentedControl.backgroundColor设置颜色时,颜色会超出控件的边缘(尽管不会超出视图的边界)。下面是一个示例,将分段控件的背景颜色设置为白色,容器视图的背景颜色设置为灰色:
我已经设置了分段控件的AutoLayout约束,因此应该使用intrinsicContentSize,但我还没有看到其他人发布有关此问题的信息
请注意,上面的图片是我能够看到的最好的图像......在此之前,它的流量大约是3-4px。
我已经尝试将视图配置为clipSubviews,并将支持UIView的图层配置为masksToBounds,但我没想到会解决问题,因为我认为出血包含在视图的/图层边界内。
任何建议或建议表示赞赏。如果不是,我只需要创建图像来支持修复流血的UISegmentedControl,但至少可以说要维护是烦人的。
答案 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