SwiftUI 2 настройка GraphicalDatePickerStyle()

#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. Я немного поиграл с цветом акцента и пришел к тому, чем остался доволен — спасибо!