[ios] Swift로 자리 표시 자 텍스트 색상 변경

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)