web-dev-qa-db-ja.com

ダークモードのUIDatePicker選択日付テキストの色を変更する(iOS 13)

IOS 13のダークモードで選択した日付のテキストの色を変更するための解決策を見つけるのに苦労しています。

コードを使用してUIPickerビューのテキストの色を変更する方法を知っています

self.timePicker.setValue(UIColor.black, forKeyPath: "textColor")

または、ユーザー定義のランタイム属性を使用します。しかし、iOS 13のダークモードで選択した日付の色を変更しても何も機能しません。背景が白、テキストが黒の日付ピッカービューは次のようになります。

enter image description here

したがって、テキストの色を黒に変更しても、選択した日付のテキストの色は変更されません。他のすべてのテキストの色を黒に変更します。選択したものではありません。選択したものは白のままで、ダークモードのデフォルトです。

11
Saleh Sultan

UIDatePickerの拡張機能を記述してから、datePickerテキストのtextColorをUIColor.labelに設定できます。これは、インターフェイスモード(ライト/ダークモード)に応じて動的に変化します。

extension UIDatePicker {

     var textColor: UIColor? {
         set {
              setValue(newValue, forKeyPath: "textColor")
             }
         get {
              return value(forKeyPath: "textColor") as? UIColor
             }
     }  

     var highlightsToday : Bool? {
         set {
              setValue(newValue, forKeyPath: "highlightsToday")
             }
         get {
              return value(forKey: "highlightsToday") as? Bool
             }
     }      
 }

この後、次のようにtextColor値を設定できます。

  let datePicker = UIDatePicker()  
  datePicker.textColor = UIColor.label
0
Anshuman Singh