是否可以更改UISegmentedControl的转角半径?我尝试过以下方法,用于改变UIView的角半径。
self.segmentedControl.layer.cornerRadius = 15.0;
self.segmentedControl.layer.masksToBounds = YES;
这不起作用,因为你可以看到它只切断了UISegmentedControl角落。
谢谢!
这应该工作:
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后指定边框。
在UIView中嵌入UISegmentedControl并为UIView设置角半径。
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
分段控制不会改变它的角落,所以它继续以自己的方式绘制角落,然后你将其切断。您不负责分段控件如何绘制其边界形状。如果你真的不喜欢它的绘制方式,你将不得不从头开始设计自己的替代控件。你可以合理地接近你想要做的事情是设置分段控件的背景图像。
更新了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
你的结果是因为其他东西(自定义绘图?)控制边框而不是图层。幸运的是,图层设置似乎具有优先权。
如果您知道所需的边框颜色,可以添加(示例):
self.segmentedControl.layer.borderColor = [UIColor whiteColor].CGColor;
self.segmentedControl.layer.borderWidth = 1.0;
之前的解决方案从未对我有用。我的解决方案是:
要将UISegmentedControl
嵌入到superview中,然后将-1分配给约束前导,尾随,底部,顶部,以便切断UISegmentedControl
边界。最后应该以这种方式配置superview:
segmentedControl.superview.clipsToBounds = true
segmentedControl.superview.layer.cornerRadius = 0 //whatever
segmentedControl.superview.layer.borderWidth = 1
segmentedControl.superview.layer.borderColor = segmentedControl.tintColor.CGColor
这是Yakiv's post的Swift 4.1和Xcode 9.3的转换和工作代码。
segmentedOuterView.layer.cornerRadius = segmentedOuterView.bounds.height / 2
segmentedOuterView.layer.borderColor = UIColor.red.cgColor
segmentedOuterView.layer.borderWidth = 1
segmentedOuterView.layer.masksToBounds = true
使用以下代码:
segmentContrl.layer.borderColor=*anycolor*.CGColor;
segmentContrl.layer.cornerRadius = 0.0;
segmentContrl.layer.borderWidth = 1.5f;
没有layer
就有可能。你可以试试
segmentedControl.borderColor = UIColor.line
segmentedControl.borderWidth = 1
segmentedControl.cornerRadius = 8