带方角的UISegmentedControl

Jos*_*eph 21 cornerradius uisegmentedcontrol ios ios5

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

有没有办法做到这一点?

谢谢

swa*_*nan 36

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

segmentContrl.layer.borderColor=*anycolor*.CGColor;
segmentContrl.layer.cornerRadius = 0.0;
segmentContrl.layer.borderWidth = 1.5f;
Run Code Online (Sandbox Code Playgroud)

  • 然后忽略cornerRadius. (4认同)
  • 这适用于我的目的,但不需要cornerRadius部分. (2认同)

Cla*_*fou 15

一种替代方案,如果第一段和最后一段的"裁剪"部分有问题,可能是裁剪整个第一段和最后一段(您已经制作了虚拟的未使用段).这样,您仍然可以为每个细分保持一个共同的大小.


jos*_*hap 11

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

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


pro*_*rmr 9

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

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


小智 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子视图.

在此输入图像描述