#swift #xcode #datepicker #swiftui #darkmode
#swift #xcode #выбор даты #swiftui #темный режим
Вопрос:
Итак, у меня есть средство выбора даты, которое я пытаюсь реализовать в темном режиме — у него есть пара графических сбоев, а именно, выбранная дата в календаре имеет белый текстовый цвет, как я могу это исправить? Я выделил проблемные области красными кружками, по сути, мне просто нужно иметь возможность изменять цвет переключения и изменять сегодняшнюю дату (когда она выбрана) на черный текстовый цвет:
DatePicker("", selection: self.$Time, in: Date()..., displayedComponents: [.date, .hourAndMinute])
.datePickerStyle(GraphicalDatePickerStyle())
.colorMultiply(Color.black)
.colorInvert()
.foregroundColor(Color.white)
.background(Color.black)
У кого-нибудь есть идеи, как это решить?
Комментарии:
1. Не уверен, что я понял, чего вы пытались достичь. Стандартные элементы управления поддерживают темный режим из коробки.
2. @Asperi 1) Я знаю, что они поддерживают стандартные элементы управления, но я хочу предоставить пользователю возможность переключать цветовую схему в приложении. Все, что я хочу сделать, это создать графический указатель даты, который хорошо выглядит и функционирует — я прикрепил изображение к вопросу, чтобы вы могли видеть, о чем я говорю, переключатель AM / PM невидим, потому что текст белый, и когда вы выбираете today в качестве выбранного дня, вы не видитеномер, потому что цвет текста белый. Есть идеи?
Ответ №1:
Существуют ограничения на настройку некоторых элементов SwiftUI. Я также протестировал это, и похоже, что в темном режиме на текущей дате автоматически появляется белый выделенный круг, который нельзя настроить. Я бы предложил следующее, в котором используется серый акцентный цвет в темном режиме:
@Environment(.colorScheme) var colorScheme: ColorScheme
var body: some View {
DatePicker("", selection: $date, in: Date()..., displayedComponents: [.date, .hourAndMinute])
.datePickerStyle(GraphicalDatePickerStyle())
.accentColor(colorScheme == .dark ? Color.secondary : Color.primary)
.background(Color(UIColor.systemBackground))
}
Комментарии:
1. Я немного поиграл с цветом акцента и пришел к тому, чем остался доволен — спасибо!