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

UISegmentedControl с квадратными углами

Я хотел бы изменить UISegmentedControl с подклассом, чтобы удалить закругленные углы. Кажется, я не могу установить cornerRadius. Создание SegmentedControl шире экрана (и, следовательно, "отбивание" с углов) не является вариантом, поскольку у меня есть 4 или 5 сегментов, и тогда они будут меняться по размеру.

Есть ли способ сделать это?

Спасибо

4b9b3361

Ответ 1

Вы можете установить ширину сегментов (используя setWidth:forSegmentAtIndex:), чтобы вы могли легко увеличить левый и правый сегменты (например, 10px больше), чем другие, а затем вы можете обрезать 10px с любого конца и иметь квадратные углы. Вам не нужно увеличивать ширину экрана, а вместо этого вставлять его в UIView и использовать для обрезки концов.

С другой стороны, просто можно просто создать собственный сегментированный элемент управления, используя набор пользовательских UIButtons внутри UIControl.

Ответ 2

Чтобы сделать квадратный квадрат, используйте следующий код:

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

Ответ 3

Один вариант, если "обрезка" части первого и последнего сегмента проблематична, возможно, нужно обрезать весь первый и последний сегменты (которые вы сделали фиктивными неиспользуемыми сегментами). Таким образом, вы можете сохранить общий размер для каждого сегмента.

Ответ 4

Просто используйте встроенные методы настройки и установите фоновое изображение для каждого состояния сегмента. Это полностью отменяет границу. Если фоновые изображения квадратные, ваш сегментированный элемент управления будет казаться квадратным. Используйте следующий код для каждого состояния сегмента, которое вы хотите настроить.

[segmentedControl setBackgroundImage:[UIImage imageNamed:@"square-background-image-selected"] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault];

Ответ 5

Другая альтернатива для выполнения этого в построителе интерфейса:

Перетащите объект UIView в ваш UIViewController, это может быть подзаголовком вашего UIView.

Перетащите UISegmentedControl в качестве подзаголовка вашего UIView. Теперь сегментированный элемент управления должен быть отступом в ваших объектах UIViewController. (см. снимок экрана ниже).

Измените размер SegementedControl так, чтобы его "кадр находился за пределами вашего объекта UIView. В моем случае я установил фрейм SegementedControl в X = -10 и добавил +20 к ширине SegementedControl, чтобы общая ширина сегментарного элемента управления, потому что 20 больше, чем объект UIView. (надеюсь, снимок экрана ниже помогает).

Я также настроил следующие настройки для объекта UIView и SegmentedControl: UIView: проверьте подэлементы Clip, снимите флажок AutoResize Subviews. SegementedControl: снимите флажок "Подвижные элементы клипа", снимите флажок "Подтверждения AutoResize".

enter image description here