带方角的UISegmentedControl

时间:2011-10-12 11:13:03

标签: ios ios5 uisegmentedcontrol cornerradius

我想用子类修改UISegmentedControl来删除圆角。我似乎无法设置cornerRadius。使SegmentedControl比屏幕更宽(因此从角落“切掉”)不是一种选择,因为我有4或5个段,然后它们的大小会有所不同。

有办法做到这一点吗?

由于

5 个答案:

答案 0 :(得分:35)

要制作角落方形,请使用以下代码:

segmentContrl.layer.borderColor=*anycolor*.CGColor;
segmentContrl.layer.cornerRadius = 0.0;
segmentContrl.layer.borderWidth = 1.5f;

答案 1 :(得分:15)

另一种选择,如果第一段和最后一段的“裁剪”部分存在问题,可能会裁剪整个第一段和最后一段(您已经制作了虚拟的未使用段)。这样,您仍然可以为每个细分受众群保持一个共同的尺寸。

答案 2 :(得分:11)

只需使用内置的自定义方法,并为每个段状态设置背景图像。这将完全覆盖边框。如果背景图像是方形的,那么您的分段控件将显示为方形。对要定制的每个段状态使用以下代码。

[segmentedControl setBackgroundImage:[UIImage imageNamed:@"square-background-image-selected"] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];

答案 3 :(得分:9)

您可以设置片段的宽度(使用setWidth:forSegmentAtIndex:),这样您就可以轻松地使左右两端片段比其他片段更大(比例大10倍),然后您可以从任一端裁剪10px有方角。您不必将其放大到屏幕宽度,而是将其放在UIView内并用它来裁剪末端。

另一方面,只需使用UIControl中的一组自定义UIButton进行自己的分段控制。

答案 4 :(得分:5)

在界面构建器中完成此任务的另一种方法:

将UIView对象拖到UIViewController上,这可能是你的UIView的子视图。

将UISegmentedControl拖动为UIView的子视图。现在应该在列表UIViewController对象中缩进分段控件。 (见下面的截图)。

调整SegementedControl的大小,使其'框架超出UIView对象的边界。在我的例子中,我将SegementedControl的框架设置为X = -10并将+20添加到SegementedControl的宽度,以便分割控件的总宽度因为比UIView对象大20。 (希望下面的屏幕截图有帮助)。

我还调整了UIView对象和SegmentedControl的以下设置: UIView:选中Clip SubViews,取消选中AutoResize子视图。 SegementedControl:取消选中Clip SubViews,取消选中AutoResize Subviews。

enter image description here