반응형
안녕하세요 코찐입니다.
UITextField를 쓸 때 플레이스 홀더 텍스트의 색상을 변경할 일이 있습니다.
textField.placeholderColor 로 지정가능하면 좋을텐데 그런 변수는 없습니다...
그래서 매번 검색해서 찾게되는데요.
다음에 또 찾을 수 있도록 기록차 남겨둡니다.
해결책
https://stackoverflow.com/questions/1340224/iphone-uitextfield-change-placeholder-text-color
textField.attributedPlaceholder = NSAttributedString(string: "플레이스홀더", attributes: [.foregroundColor: UIColor.systemGray])
이런식으로 AtrributedString을 만들어서 넣어주면 됩니다.
조금 더 편하게
저는 AtrributedString 사용하는게 번거롭다고 생각되어서 Extension을 만들어보겠습니다.
public extension UITextField {
func setPlaceholderColor(_ placeholderColor: UIColor) {
attributedPlaceholder = NSAttributedString(
string: placeholder ?? "",
attributes: [
.foregroundColor: placeholderColor,
.font: font
].compactMapValues { $0 }
)
}
}
그러면 사용하는 쪽에서는 다음과 같이 쓸 수 있습니다.
textField.placeholder = "플레이스홀더"
textField.setPlaceholderColor(.systemGray)
String을 넣고 Color를 지정하는 순서를 지켜야한다는 점이 단점이긴 합니다.
그래도 좀 더 간편하게 사용할 수 있다고 생각해서 공유합니다 :)
반응형