UITextField
자리 표시 자 텍스트는 기본적으로 어두운 회색이므로 자리 표시 자 텍스트의 내용을 거의 알아낼 수 없으므로 짙은 파란색을 구현하는 디자인이 있습니다.
물론 문제를 봤지만 Swift 언어를 사용하는 동안 Obj-c가 아닌 해결책을 찾지 못했습니다.
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
오른쪽에서 신원 관리자를 엽니 다.
더하기 버튼을 클릭하고 새로운 런타임 속성을 추가하십시오.
placeholderLabel.textColor (Swift 4)
_placeholderLabel.textColor (Swift 3 이하)
색상 을 유형으로 사용하고 색상 을 선택하십시오.
그게 다야.
앱을 다시 실행할 때까지 결과가 표시되지 않습니다.
답변
다음 UITextField
과 같이 확장을 작성하십시오 .
extension UITextField{
@IBInspectable var placeHolderColor: UIColor? {
get {
return self.placeHolderColor
}
set {
self.attributedPlaceholder = NSAttributedString(string:self.placeholder != nil ? self.placeholder! : "", attributes:[NSAttributedString.Key.foregroundColor: newValue!])
}
}
}
그리고 스토리 보드 또는 .xib에서. 당신은 볼 것이다
답변
Swift 3.0에서는
let color = UIColor.lightText
textField.attributedPlaceholder = NSAttributedString(string: textField.placeholder, attributes: [NSForegroundColorAttributeName : color])
Siwft 5.0 이상 + 사용
let color = UIColor.lightText
let placeholder = textField.placeholder ?? "" //There should be a placeholder set in storyboard or elsewhere string or pass empty
textField.attributedPlaceholder = NSAttributedString(string: placeholder, attributes: [NSAttributedString.Key.foregroundColor : color])
답변
이 코드는 Swift3에서 작동합니다.
yourTextFieldName .setValue(UIColor.init(colorLiteralRed: 80/255, green: 80/255, blue: 80/255, alpha: 1.0), forKeyPath: "_placeholderLabel.textColor")
문제가 있으면 알려주세요.
답변
UITextField
앱에서 모든 자리 표시 자 색상을 한 번 설정하려면 다음을 수행하십시오.
UILabel.appearanceWhenContainedInInstancesOfClasses([UITextField.self]).textColor = UIColor.redColor()
TextField
전체 앱의 모든 자리 표시 자에 원하는 색상이 설정 됩니다. 그러나 iOS 9부터 사용할 수 있습니다.
iOS 9 이전에는 신속하게 appearenceWhenContainedIn …. () 메소드가 없지만 여기에 제공된 솔루션 중 하나 를 Swift에서 사용할 수 있습니다.
답변
제 경우에는 Swift 4를 사용합니다
UITextField의 확장을 만듭니다.
extension UITextField {
func placeholderColor(color: UIColor) {
let attributeString = [
NSAttributedStringKey.foregroundColor: color.withAlphaComponent(0.6),
NSAttributedStringKey.font: self.font!
] as [NSAttributedStringKey : Any]
self.attributedPlaceholder = NSAttributedString(string: self.placeholder!, attributes: attributeString)
}
}
yourField.placeholderColor (색상 : UIColor.white)