如何改变UISegmentedControl的圆angular半径?

是否有可能改变UISegmentedControl的圆angular半径? 我尝试了下面的方法来改变UIView的圆angular半径。

self.segmentedControl.layer.cornerRadius = 15.0; self.segmentedControl.layer.masksToBounds = YES; 

这不起作用,因为你可以看到它只是切断了UISegmentedControl的angular落。 在这里输入图像说明

谢谢!

这应该工作:

 self.segmentedControl.layer.cornerRadius = 15.0; self.segmentedControl.layer.borderColor = [UIColor whiteColor].CGColor; self.segmentedControl.layer.borderWidth = 1.0f; self.segmentedControl.layer.masksToBounds = YES; 

您需要在设置cornerRadius后指定边框。

将UISegmentedControlembedded到UIView中,并为UIView设置圆angular半径。

Objective-C的

 outerView.layer.cornerRadius = CGRectGetHeight(outerView.bounds) / 2; outerView.layer.borderColor = [UIColor blueColor].CGColor; outerView.layer.borderWidth = 1; 

迅速

 outerView.layer.cornerRadius = CGRectGetHeight(outerView.bounds) / 2 outerView.layer.borderColor = UIColor.blueColor().CGColor outerView.layer.borderWidth = 1 

角色UISegmentedControl

分段的控制不会改变它画出angular的方式,所以它继续以自己的方式画出angular,然后切断它们。 您不负责分段控制如何绘制其边界形状。 如果你真的不喜欢它的绘制方式,你必须从头开始devise自己的替代控制。 你可以合理地接近你想要做的事情是设置分段控制的背景图像。

你的结果是因为别的东西(自定义绘图?)控制边框而不是图层。 幸运的是,该图层设置似乎优先。

如果你知道你需要什么边框颜色,你可以添加(例子):

 self.segmentedControl.layer.borderColor = [UIColor whiteColor].CGColor; self.segmentedControl.layer.borderWidth = 1.0; 

以前的解决scheme不适合我。 我的实际工作解决scheme是:

将UISegmentedControlembedded到UIView(让我们说“outerViewControl”)中,并且将该引用,引导,尾随,底部和顶部空间约束设置为-1(以便切断UISegmentedControl边框)。

那么你的outerViewControl应该是这样的:

 outerViewControl.clipsToBounds = true; outerViewControl.layer.cornerRadius = 0; //whatever outerViewControl.layer.borderWidth = 1; outerViewControl.layer.borderColor = segmentedControl.tintColor.CGColor; 

使用下面的代码:

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

更新了Swift 3和Xcode 8.2的兼容性

  mySegmentedControl.layer.cornerRadius = 25.0 mySegmentedControl.layer.borderColor = UIColor.white.cgColor mySegmentedControl.layer.borderWidth = 1.0 mySegmentedControl.layer.masksToBounds = true