Как изменить радиус угла UISegmentedControl?
можно ли изменить радиус угла UISegmentedControl? Я попробовал следующий подход, который мы используем для изменения радиуса угла UIView.
self.segmentedControl.layer.cornerRadius = 15.0;
self.segmentedControl.layer.masksToBounds = YES;
Это не сработало, поскольку вы можете видеть, что он только отрезает угол UISegmentedControl.
спасибо!
8 ответов
Это должно работать:
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.
встроить UISegmentedControl внутри UIView и установить радиус угла для - наследник UIView.
С
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
сегментированный элемент управления не собирается изменять способ, которым он рисует свои углы, поэтому он продолжает рисовать свои углы по-своему, и вы затем отрезаете их. Вы не отвечаете за то, как сегментированный элемент управления рисует свою граничную форму. Если вам действительно не нравится, как он нарисован, вам придется разработать свой собственный заменяющий контроль с нуля. Самое близкое, что вы можете законно сделать, - это установить фоновое изображение сегментированного элемента управления.
ваш результат, потому что что-то другое (на заказ рисуешь?) контролирует границу, а не слой. К счастью, кажется, что настройки слоя имеют приоритет.
Если вы знаете, какой цвет вам нужно, вы можете просто добавить (пример):
self.segmentedControl.layer.borderColor = [UIColor whiteColor].CGColor;
self.segmentedControl.layer.borderWidth = 1.0;
обновлено для совместимости 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
предыдущие решения никогда не работали для меня. Мое решение:
вставить UISegmentedControl
внутри супервизора, затем назначьте -1 ограничениям leading, trailing, bottom, top, чтобы отрезать UISegmentedControl
границы.
Наконец, superview должен быть настроен следующим образом:
segmentedControl.superview.clipsToBounds = true
segmentedControl.superview.layer.cornerRadius = 0 //whatever
segmentedControl.superview.layer.borderWidth = 1
segmentedControl.superview.layer.borderColor = segmentedControl.tintColor.CGColor
использовать следующий код :
segmentContrl.layer.borderColor=*anycolor*.CGColor;
segmentContrl.layer.cornerRadius = 0.0;
segmentContrl.layer.borderWidth = 1.5f;
это преобразованный и рабочий код для Swift 4.1 и Xcode 9.3 of Яков это!--5-->.
segmentedOuterView.layer.cornerRadius = segmentedOuterView.bounds.height / 2
segmentedOuterView.layer.borderColor = UIColor.red.cgColor
segmentedOuterView.layer.borderWidth = 1
segmentedOuterView.layer.masksToBounds = true