是否可以更改UISegmentedControl的拐角半徑?我嘗試了以下方法來改變UIView的圓角半徑。如何更改UISegmentedControl的圓角半徑?
self.segmentedControl.layer.cornerRadius = 15.0;
self.segmentedControl.layer.masksToBounds = YES;
這不起作用,因爲你可以看到它只是切斷了UISegmentedControl的角落。
謝謝!
是否可以更改UISegmentedControl的拐角半徑?我嘗試了以下方法來改變UIView的圓角半徑。如何更改UISegmentedControl的圓角半徑?
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後指定邊框。
分段控制不會改變它繪製角的方式,所以它會繼續以自己的方式繪製角,然後將其切除。您不負責分段控制如何繪製其邊界形狀。如果你真的不喜歡它的繪製方式,你必須從頭開始設計自己的替代控制。你可以合理地接近你想要做的事情是設置分段控件的背景圖像。
你的結果是因爲別的東西(自定義繪圖?)控制邊框而不是圖層。幸運的是,該圖層設置似乎優先。
如果你知道你需要什麼邊框的顏色,你可以只添加(例如):
self.segmentedControl.layer.borderColor = [UIColor whiteColor].CGColor;
self.segmentedControl.layer.borderWidth = 1.0;
它是如何改變圓角半徑的? –
這不會改變拐角半徑。它只是補充問題中發佈的原始代碼以獲得預期結果。 –
將UISegmentedControl嵌入到UIView中並設置角落半徑爲UIView。
目標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
更新了夫特3 &的Xcode 8.2兼容性
mySegmentedControl.layer.cornerRadius = 25.0
mySegmentedControl.layer.borderColor = UIColor.white.cgColor
mySegmentedControl.layer.borderWidth = 1.0
mySegmentedControl.layer.masksToBounds = true
以前的解決方案從來沒有爲我工作。我的解決方案是:
要將超級視圖中的UISegmentedControl
嵌入,請將約束前導,尾隨,底部,頂部分配爲-1,以便切斷UISegmentedControl
邊界。 最後應該這樣配置超級視圖:
segmentedControl.superview.clipsToBounds = true
segmentedControl.superview.layer.cornerRadius = 0 //whatever
segmentedControl.superview.layer.borderWidth = 1
segmentedControl.superview.layer.borderColor = segmentedControl.tintColor.CGColor
這是正確的解決方案! – rushelmet
只有當你想增加角落角度時纔有效。 –
它不能解決最初的問題,只有角落被切斷。請參閱下面的答案。 –