首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止backgroundColor的UISegmentedControl出血超出节段边界

如何防止backgroundColor的UISegmentedControl出血超出节段边界
EN

Stack Overflow用户
提问于 2013-12-11 19:30:06
回答 3查看 8.9K关注 0票数 38

我注意到,当我为UISegmentedControl.backgroundColor设置颜色时,颜色会超出控件的边缘(虽然没有超出视图的范围)。下面是一个示例,将分段控件的背景色设置为白色,容器视图的背景色设置为灰色:

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

请注意,上面的图片是我所能看到的最好的.在此之前,它的出血约3-4 4px。

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

如有任何建议或建议,请见谅。如果不是的话,我只需要创建映像来支持修复出血的UISegmentedControl,但至少要维护它是很烦人的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-11 19:33:48

将段控件的层角半径设置为4.0。应该会有帮助的。您可能需要导入QuartzCore才能访问该层的属性。

代码语言:javascript
复制
segment.layer.cornerRadius = 4.0;
segment.clipsToBounds = YES;
票数 76
EN

Stack Overflow用户

发布于 2014-10-30 07:33:38

将线段控制层角半径设置为5,ClipsToBounds是。

代码语言:javascript
复制
segmentController.layer.cornerRadius = 5;    
segmentController.clipsToBounds = YES;

希望它能为你服务

票数 9
EN

Stack Overflow用户

发布于 2016-04-25 15:55:49

我在Swift所能达到的最好的结果是:

代码语言:javascript
复制
    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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20528255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档