iOS Swift: Цвет оттенка UISegmentedControl перекрывается с заголовком - PullRequest
0 голосов
/ 19 июня 2020

Мне нужен внешний вид iOS 13 UISegmentedControl для всех предыдущих версий iOS. Я попытался настроить segmentControl с помощью цвета и границы. Вот мой код:

private func create(_ items: [String]) {
        segmentControl.backgroundColor = .lightGray
        segmentControl.cornerRadius = 10
        segmentControl.borderColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.04).cgColor
        segmentControl.borderWidth = 0.5
        items.enumerated().forEach { (index, item) in
            segmentControl.setTitle(item, forSegmentAt: index)
            if let titleAttributes = titleAttributes {
                segmentControl.setTitleTextAttributes([.foregroundColor: titleAttributes.color, .font: titleAttributes.font], for: .normal)
            }
        }
        if #available(iOS 13.0, *) {
            segmentControl.selectedSegmentTintColor = .white
        } else {
            segmentControl.tintColor = .white
        }
    }

Приведенный выше код идеально подходит для iOS13, но для предыдущих версий выбранный сегмент tintColor не подходит. Я установил белый цвет для выбранного сегмента и серый цвет фона. Выбранный цвет оттенка будет блекнуть заголовком. Границы тоже не отображаются.

Прилагается скриншот. Выбранный оттенок сегмента «белый» неверен. Похоже, название осталось позади. enter image description here

В то время как в iOS 13 это выглядит идеально enter image description here

Я пробовал много решений, это не работает . Или есть способ добавить iOS 13 появлений и для более ранних версий? Пожалуйста помоги.

Спасибо !!!

1 Ответ

0 голосов
/ 29 июня 2020

измените tintColor на selectedColor ваш новый код будет:

private func create(_ items: [String]) {
        segmentControl.backgroundColor = .lightGray
        segmentControl.cornerRadius = 10
        segmentControl.borderColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.04).cgColor
        segmentControl.borderWidth = 0.5
        items.enumerated().forEach { (index, item) in
            segmentControl.setTitle(item, forSegmentAt: index)
            if let titleAttributes = titleAttributes {
                segmentControl.setTitleTextAttributes([.foregroundColor: titleAttributes.color, .font: titleAttributes.font], for: .normal)
            }
        }
        if #available(iOS 13.0, *) {
            segmentControl.selectedSegmentTintColor = .white
        } else {
            segmentControl.selectedColor = .white
        }
    }

цвет оттенка -> изменить весь цвет просмотра выбранного цвета -> изменяется при выборе объекта!

...