我想给一个UISegmentedControl提供以下几个方面:

请注意灰色背景视图和分段控件未选中项的白色背景。
但是,如果我给我的UISegmentedControl设置一个白色背景,我会得到以下结果:

请注意UISegmentedControl周围的白色方角。我该怎么做才能避开那些方形的角落呢?
先谢谢你,
编辑:如果我改变UISegmentedControl的层的角半径,如一个灰色的建议,结果会更好,但不完美(注意右边的白线):

发布于 2013-10-02 21:55:42
设置_segmentedControl.layer.cornerRadius = 5;可能会有所帮助。
更新:更复杂的裁剪矩形,去掉1px的右边空格:
CAShapeLayer* mask = [[CAShapeLayer alloc] init];
mask.frame = CGRectMake(0, 0, _segmentedControl.bounds.size.width-1, _segmentedControl.bounds.size.height);
mask.path = [[UIBezierPath bezierPathWithRoundedRect:mask.frame cornerRadius:4] CGPath];
_segmentedControl.layer.mask = mask;更新: Matthias Bauch提供了一个很好的解释,为什么这个空白出现在UISegmentedControl的右侧。因此,删除它的最简单的方法是使线段具有固定的大小,并将它们调整为适当的宽度。
发布于 2013-10-02 23:16:03
我知道这是一种技巧,但你可以使用一个圆角的UIView,白色背景放在分段控件的正下方,并与之对齐,除了宽度应该等于原始控件的宽度减1。
结果:

https://stackoverflow.com/questions/19138252
复制相似问题