Подтвердить что ты не робот

Как изменить радиус угла UISegmentedControl?

Можно ли изменить радиус угла UISegmentedControl? Я попробовал следующий подход, который мы используем для изменения радиуса угла UIView.

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

Это не сработало, так как вы можете видеть, что он отключает только UISegmentedControl.  enter image description here

Спасибо!

4b9b3361

Ответ 1

Это должно работать:

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.

Ответ 2

Вставить UISegmentedControl внутри UIView и задать радиус угла для 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

Угловой UISegmentedControl

Ответ 3

Сегментированный элемент управления не изменит способ, которым он рисует свои углы, поэтому он продолжает рисовать свои углы по-своему, и вы затем отсекаете их. Вы не отвечаете за то, как сегментированный элемент управления рисует свою граничную форму. Если вам действительно не нравится способ, который он нарисовал, вам придется разработать свой собственный элемент управления с нуля. Ближе всего вы можете законно подойти к тому, что вы пытаетесь сделать, это установить сегментированное фоновое изображение управления.

Ответ 4

Ваш результат в том, что что-то другое (пользовательский чертеж?) управляет границей, а не слоем. К счастью, кажется, что настройки этого слоя имеют приоритет.

Если вы знаете, какой цвет границы вам нужен, вы можете просто добавить (пример):

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

Ответ 5

Обновлено для совместимости 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

Ответ 6

Предыдущие решения никогда не помогли мне. Мое решение:

Чтобы встроить UISegmentedControl в 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

Ответ 7

Это конвертированный и рабочий код для 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

Ответ 8

Используйте следующий код:

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

Ответ 9

Это возможно без layer. Ты можешь попробовать

segmentedControl.borderColor = UIColor.line
segmentedControl.borderWidth = 1
segmentedControl.cornerRadius = 8