web-dev-qa-db-ja.com

iOS13ダークモードでUITextFieldプレースホルダーテキストが読めない

UITextFieldには.placeholder textプロパティ。テキストがフィールドに追加される前に情報を表示するために、これまでは常に明確で表示されていましたが、iOS13でダークモードが導入され、プレースホルダーテキストが白いUITextFieldで実質的に読み取れなくなりました(明示的に作成しています) .backgroundColor = [UIColor whiteColor])。

私の質問は、プロジェクト全体でこれを修正するためのいくつかの実用的な解決策は何ですか、単にattributedPlaceholder文字列を設定するだけで、任意のUITextFieldのプレースホルダーの色を手動で手動で変更できます。特にUITextFieldsだけで他の要素ではなくダークモード設定を無効にする方法

5
Albert Renshaw

テキストフィールドの背景を明示的に白に設定しないことを検討します。

ここで説明されているUI要素の色を使用すると、ダークモードとライトモードをより強力にサポートできます。 https://developer.Apple.com/documentation/uikit/uicolor/ui_element_colors

テキストフィールドの1つに対して、次のようなことを行いました。

if #available(iOS 13, *) {
    self.searchBarTextField.textColor = UIColor.label
    self.searchBarTextField.backgroundColor = UIColor.secondarySystemBackground
} else {
    self.searchBarTextField.backgroundColor = UIColor(white: 1.0, alpha: 1.0)
}

上記のコードから、ユーザーがライトモードとダークモードの設定を変更すると、テキストフィールドの背景が動的に変化します。そして、それに応じてテキストの色が変化します。そしてプレースホルダーによってテキストの色はOSによって処理されます。必要に応じてオーバーライドできます: https://developer.Apple.com/documentation/uikit/uicolor/3173134-placeholdertext

1
Albert Tong

アプリ全体をライトモードに強制したくない場合は、最も簡単な方法

placeholderTextColorTextInputコンポーネントに追加するだけです

私のために働く✌️