我想通过子类修改 UISegmentedControl ,以去除其圆角。我尝试设置 cornerRadius 但似乎无效。将 SegmentedControl 的宽度调整为超出屏幕(因此截去圆角)不是一个选项,因为我有4或5个选项卡,并且它们的大小会变化。
有没有办法实现这个目标?
谢谢。
我想通过子类修改 UISegmentedControl ,以去除其圆角。我尝试设置 cornerRadius 但似乎无效。将 SegmentedControl 的宽度调整为超出屏幕(因此截去圆角)不是一个选项,因为我有4或5个选项卡,并且它们的大小会变化。
有没有办法实现这个目标?
谢谢。
要使角落正方形,请使用以下代码:
segmentContrl.layer.borderColor=*anycolor*.CGColor;
segmentContrl.layer.cornerRadius = 0.0;
segmentContrl.layer.borderWidth = 1.5f;
如果“裁剪”第一个和最后一个片段的一部分存在问题,则一种替代方法可能是裁剪整个第一个和最后一个片段(即您制作的虚拟未使用的片段)。这样,您仍然可以为每个片段保持共同的大小。
只需使用内置的自定义方法并为每个段状态设置背景图像。这将完全覆盖边框。如果背景图片是正方形的,则您的分段控件将显示为正方形。对于要自定义的每个段状态,请使用以下代码。
[segmentedControl setBackgroundImage:[UIImage imageNamed:@"square-background-image-selected"]
forState:UIControlStateSelected
barMetrics:UIBarMetricsDefault];
您可以使用setWidth:forSegmentAtIndex:设置分段控件的宽度,以便您可以轻松地使左侧和右侧端点比其他部分大(比如多10像素),然后可以从任一端点剪切10像素并具有方形角。 您不必使其大于屏幕宽度,而是将其放入UIView中并使用它来剪裁端点。
另一方面,只需在UIControl内部使用一组自定义UIButtons创建自己的分段控件即可。
在界面构建器中实现此功能的另一种方法:
将UIView对象拖到您的UIViewController中,这可能是您的UIView的子视图。
将UISegmentedControl作为UIView的子视图拖动。分段控件现在应该缩进在您的列表UIViewController对象中。(见下面的截图)。
调整SegementedControl的大小,使其框架超出您的UIView对象的边界。在我的情况下,我将SegementedControl的框架设置为X = -10,并将SegementedControl的宽度增加了+20,以使分段控制的总宽度比UIView对象大20。(希望下面的屏幕截图有所帮助)。
我还调整了UIView对象和SegmentedControl的以下设置: UIView:选中“剪辑子视图”,取消选中“自动调整子视图”。 SegementedControl:取消选中“剪辑子视图”,取消选中“自动调整子视图”。