Цвет текста выбранного элемента в SwiftUI Picker

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

Enabled Control Нет опции цвета шрифта, особенно для отключенного состояния, указанного в документации Apple.

    var strengths = ["Mild", "Medium", "Mature"]

    @State private var selectedStrength = 0

    var body: some View {
        NavigationView {
            Form {
                Section {
                    Picker(selection: $selectedStrength, label: Text("Strength")) {
                        ForEach(0 ..< strengths.count) {
                            Text(self.strengths[$0])

                        }
                    }
                    .disabled(true)
                }
            }.navigationBarTitle("Select your cheese")

        }
    }
}

Я хотел бы изменить цвет шрифта, чтобы он был более читабельным.


person Justin Ngan    schedule 12.09.2019    source источник


Ответы (1)


Получите индекс в этом ForEach и проверьте его с помощью observables.selection. Затем при необходимости измените цвет текста:

...
ForEach (0 ..< observables.Intact.endIndex, id: \.self) { index in
    Text(self.observables.Intact[$0]).tag($0)
        .foregroundColor(self.observables.selection == index ? .red : .blue )
}
...

Средство выбора

Вы можете комбинировать selection && editMode, если вам нужно определить его для настройки цветов.

person Mojtaba Hosseini    schedule 12.09.2019
comment
Спасибо за ответ, но есть несколько важных моментов, которые вы пропустили в моем вопросе: 1) Средство выбора отображается в форме и 2) Цвет текста - это цвет, когда средство выбора отключено. Число 1 означает, что средство выбора не относится к стилю wheelPicker, по крайней мере, не в качестве стиля средства выбора по умолчанию для формы. Число 2 означает, что текст не находится в «нормальном» состоянии, то есть текст отключенного элемента управления светится. Я хочу остановить это или уменьшить это. Что вызывает молнию? Это цвет текста, модификатор строки, как его изменить? - person Justin Ngan; 14.09.2019
comment
1) Я использовал ваш код для воспроизведения ситуации, обновите его, если он отличается от реального. 2) как я уже сказал, указано selection && editMode для изменения disabled. - person Mojtaba Hosseini; 14.09.2019
comment
Извините, selection && editMode не режет! Вы знаете, что это в SwiftUI, верно? - person Justin Ngan; 14.09.2019
comment
Вы изменили код Сильно!. Так что это совершенно другой вопрос. Я думаю, тебе следует вернуть код и задать новый вопрос, мой друг. - person Mojtaba Hosseini; 14.09.2019
comment
Не забудьте прокомментировать здесь ссылку на новый вопрос и упомянуть меня. Так что я тоже могу попытаться найти новый способ для этого. - person Mojtaba Hosseini; 14.09.2019