はじめに
TextFieldのプレースホルダー内に’ここに入力’的なヒントを付け加えたい。
結論
iOS13以降、ダークモードが搭載された端末において、プレースホルダー内の文字色を明示的に設定することはあまりよろしくない。というのも、ユーザーがライトモードとダークモードの設定を変更するとTextFieldの背景が動的に変化する。そのため、それに応じてテキストの色が変化する実装をしなければならない。
詳細
- ViewDidLoadなど描画を担当するメソッドに以下コードを記載する
Swift
override func viewDidLoad() {
super.viewDidLoad()
//メインの背景の上に重ねられるコンテンツの色。
textField.backgroundColor = .secondarySystemBackground
textField.textColor = .label
}
おわりに
iOS13以前も対応しているアプリを開発している場合、#availableなどでiOS13以降と以前の処理を分けて使えば、この辺りは上手く実装できるではないだろうか。iOS13以前の場合は、各々背景と文字の実装はする必要ありだが。
参考記事
開発環境
- Xcode-13.4.1
- iOS13以降