我想用子类修改UISegmentedControl来删除圆角。我似乎无法设置cornerRadius。使SegmentedControl比屏幕更宽(因此从角落“切掉”)不是一种选择,因为我有4或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。