タイトルの通り、UIDatePicker の highlightsToday が効かずに困り果ててました。
僕の調べた限りでは、解決方法も見つからなかったので、同じ現象の人はいないのかな…と思いましたが、とりあえず残しておこうと思います。
開発環境(前提条件)
・Xcode14
・Swift5
・レイアウトは Storyboard で作成
試した方法
UIDatePicker は以下のように設定しています。
func setupPickerView() {
datePicker.timeZone = NSTimeZone.local
datePicker.locale = .current
datePicker.datePickerMode = .date
datePicker.setValue(UIColor.red,
forKey: "textColor")
datePicker.setValue(false,
forKey: "highlightsToday")
}
いろんなサイトで散見されている highlightsToday も記載済み。
ですが、私の場合はダークモードがオンだろうがオフだろうが関係なく効きません。

こんな状態で、真ん中の文字色が変わらず…
いくら調べてもこの方法しか出てこなくて、途方に暮れました/(^o^)\
解決方法
力技ってほどではないのですが、一応解決する方法はあります。
先ほどの画像を見ての通り、色が変わっていないのは年月日の変更をしているとき。
つまり datePickerMode == UIDatePicker.Mode.date のときです。
実はこの datePickerMode を変えるだけで解決できます。
func setupPickerView() {
datePicker.timeZone = NSTimeZone.local
datePicker.locale = .current
datePicker.datePickerMode = .time // 一度変更する
datePicker.setValue(UIColor.red,
forKey: "textColor")
datePicker.setValue(false,
forKey: "highlightsToday")
datePicker.datePickerMode = .date
}
文字色を変更する前に一度 UIDatePicker.Mode.time を設定して、色を変更してあとに UIDatePicker.Mode.date に戻すことで解決します。

なぜかは知りませんが綺麗に変わります!笑
詳しく知っている方いたらぜひ教えてください(丸投げ)
さいごに
多分 Apple のバグだと思いますが、修正するのに半日ほどかかりました。笑
もし同じ現象で困ってる方がいたら、ぜひお試しください!



コメント