私はダークブルーのUITextField
を実装したデザインを持っていますが、プレースホルダー・テキストはデフォルトではダークグレーなので、プレースホルダー・テキストが何を言っているのかほとんどわかりません。
もちろん問題をググりましたが、Obj-cではなくSwift言語を使用しているため、まだ解決策を思いつきません。
Swiftを使って、UITextField
のプレースホルダーテキストの色を変更する方法はありますか?
プレースホルダーのテキストは、属性付きの文字列を使って設定できます。 欲しい色を attributes
で渡します。
var myTextField = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 30))
myTextField.backgroundColor = .blue
myTextField.attributedPlaceholder = NSAttributedString(string: "placeholder text",
attributes: [NSForegroundColorAttributeName: UIColor.yellow])
**Swift 3+では以下を使用してください。
myTextField.attributedPlaceholder = NSAttributedString(string: "placeholder text",
attributes: [NSAttributedStringKey.foregroundColor: UIColor.white])
Swift 4.2の場合は以下を使用してください:。
myTextField.attributedPlaceholder = NSAttributedString(string: "placeholder text",
attributes: [NSAttributedString.Key.foregroundColor: UIColor.white])
Interface Builderを使えば、コードを追加することなく、すぐに実現することができます。
UITextField」を選択して、右側のIDインスペクタを開きます。
プラスボタンをクリックして、新しいランタイム属性を追加します。
placeholderLabel.textColor (Swift 4)
_placeholderLabel.textColor (Swift 3以下)
タイプとしてColorを使用し、色を選択します。
これで完成です。
再度アプリを実行するまで、結果は表示されません。
アプリ内のすべての UITextField
に対してプレースホルダーの色を一度だけ設定するには、次のようにします。
UILabel.appearanceWhenContainedInInstancesOfClasses([UITextField.self]).textColor = UIColor.redColor()
これにより、アプリ全体のすべての TextField
のプレースホルダーに希望の色が設定されます。ただし、これは iOS 9 以降でしか利用できません。
iOS 9 以前の swift には appearenceWhenContainedIn....() メソッドはありませんが、ここで提供されている解決策のいずれかを使用することができます。https://stackoverflow.com/questions/24136874/appearancewhencontainedin-in-swift