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

Как предотвратить выделение backgroundColor UISegmentedControl за пределы сегментированной границы

Я заметил, что когда я устанавливаю цвет для UISegmentedControl.backgroundColor, цвет истекает за пределы элемента управления (хотя и не за пределами границ представления). Вот пример, когда сегментный цвет фона управления установлен на белый, а цвет фона в виде контейнера установлен на серый: http://i.imgur.com/yHYT14C.png

Я установил ограничения AutoLayout сегментированного элемента управления таким образом, чтобы использовать intrinsicContentSize, но я не видел, чтобы кто-либо еще сообщал об этой проблеме

Обратите внимание, что изображение выше - это лучшее, что я смог получить, чтобы он выглядел... до этого он истекал кровью примерно на 3-4 пикселя.

Я попытался настроить представление на clipSubviews и слой, поддерживающий UIView, для masksToBounds, но я не ожидал, что это исправить проблему, поскольку я предполагаю, что кровотечение содержится внутри границ представления/уровня.

Любые предложения или советы оценены. Если нет, мне просто нужно создать изображения, чтобы поддержать UISegmentedControl, которые исправляют кровотечение, но это раздражает, чтобы поддерживать, по меньшей мере.

4b9b3361

Ответ 1

Задайте угловой радиус слоя управления сегмента 4. Это должно помочь. Возможно, вам придется импортировать QuartzCore, чтобы иметь доступ к свойствам слоя.

segment.layer.cornerRadius = 4.0 
segment.clipsToBounds = true

Ответ 2

Устанавливаем угловой радиус слоя управления сегмента 5 и ClipsToBounds YES.

segmentController.layer.cornerRadius = 5;    
segmentController.clipsToBounds = YES;

Надеемся на его работу для вас

Ответ 3

лучший результат, который я мог бы достичь в Swift:

    segmentedControl.layer.cornerRadius = 4
    let mask = CAShapeLayer()
    mask.frame = CGRectMake(0, 0, segmentedControl.bounds.size.width-1, segmentedControl.bounds.size.height);
    let maskPath = UIBezierPath(roundedRect: mask.frame,
                                byRoundingCorners: [.BottomLeft, .BottomRight, .TopLeft, .TopRight],
                                cornerRadii: CGSize(width: 4.0, height: 4.0))
    mask.path = maskPath.CGPath
    segmentedControl.layer.mask = mask