การเปลี่ยนสีข้อความของตัวยึดตำแหน่งด้วย Swift


226

ฉันมีการออกแบบที่ใช้สีน้ำเงินเข้มUITextFieldเนื่องจากข้อความตัวยึดเป็นสีเทาเข้มโดยค่าเริ่มต้นฉันแทบจะไม่สามารถทำสิ่งที่ข้อความเจ้าของบอกไว้

ฉันพบปัญหาแน่นอน แต่ฉันยังไม่ได้คิดวิธีแก้ปัญหาขณะใช้ภาษา Swift ไม่ใช่ Obj-c

มีวิธีการเปลี่ยนสีข้อความของตัวยึดตำแหน่งในการUITextFieldใช้ Swift หรือไม่

คำตอบ:


501

คุณสามารถตั้งค่าข้อความตัวยึดโดยใช้สตริงมาประกอบ ผ่านสีที่คุณต้องการด้วย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])

iOS SDK 11 - กุญแจสำคัญไม่มี foregroundColor: self.emailTextField .attributedPlaceholder = NSAttributedString (สตริง "ข้อความตัวยึด" แอตทริบิวต์: [NSAttributedStringKey.foregroundColor: UIColor.white])?
แมทธิวเฟอร์กูสัน

@ MatthewFerguson ฉันเพิ่งลองและใช้งานได้ คุณมี Xcode 9 รุ่นวางจำหน่ายหรือไม่ ประเภทemailTextFieldใด
vacawama

2
@vacawama ขอบคุณสำหรับการแลกเปลี่ยน โครงการดั้งเดิมอัปเดต Xcode ของฉันจาก App store - เวอร์ชัน 9.0 (9A235) และในที่สุดก็มาพร้อมกับวิธีแก้ปัญหาของ self.passwordTextField? .attributedPlaceholder = NSAttributedString (สตริง: "PASSWORD", คุณลักษณะ:
Matthew Ferguson

3
สำหรับการใช้ SDK ของ iOS 11myTextField.attributedPlaceholder = NSAttributedString(string: "placeholder text", attributes: [NSForegroundColorAttributeName: UIColor.white])
Gema Megantara

1
มีวิธีตั้งค่าสีโดยไม่ตั้งค่าสตริงหรือไม่?
ScottyBlades

285

คุณสามารถทำสิ่งนี้ได้อย่างรวดเร็วโดยไม่ต้องเพิ่มบรรทัดของโค้ดโดยใช้ตัวสร้างส่วนต่อประสาน

เลือกUITextFieldและเปิดตัวตรวจสอบตัวตนทางด้านขวา:

ป้อนคำอธิบายรูปภาพที่นี่

คลิกที่ปุ่มเครื่องหมายบวกและเพิ่มแอททริบิวต์รันไทม์ใหม่:

placeholderLabel.textColor (Swift 4)

_placeholderLabel.textColor (Swift 3 หรือน้อยกว่า)

ใช้สีเป็นประเภทและเลือกสี

แค่นั้นแหละ.

คุณจะไม่เห็นผลลัพธ์จนกว่าคุณจะรันแอพของคุณอีกครั้ง


1
จริง แต่เป็นแฮ็คชนิดหนึ่งเนื่องจากคุณสมบัติ placeholderLabel.textColor เป็นแบบส่วนตัว ...
Frédéric Adda

1
แอพจะถูกปฏิเสธเนื่องจากเราใช้ทรัพย์สินส่วนตัวของชั้นเรียน?
firecast

2
น่าเสียดายที่นี่ไม่ได้ทำงานบน iOS 10 เป็นอย่างน้อย
nickdnk

2
@nickdnk ไม่จริง ตอนนี้ฉันทดสอบ iOS 10.2.1 แล้วและใช้งานได้ :)
Andrej

2
ถนนที่ดีที่จะเกิดความผิดพลาดที่ไม่คาดคิดถ้าแอปเปิ้ลจะมีการเปลี่ยนแปลงการดำเนินงานภายใน).
Vlad

127

สร้าง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 แล้วคุณจะได้เห็น

ป้อนคำอธิบายรูปภาพที่นี่


11
⚠️ คำเตือน:ส่วนขยายนี้จะขัดข้องโปรแกรมของคุณหากคุณตัดสินใจที่จะอ่านคุณสมบัติplaceHolderColor! ถ้าคุณส่งคืนค่าของคุณสมบัติที่คำนวณได้เองจากตัวเรียกใช้คุณสมบัติของ Getter จะถูกเรียกอีกครั้งจากภายในตัวเรียกซึ่งทำให้เกิดการเรียกซ้ำแบบไม่สิ้นสุด (ดู: stackoverflow.com/a/42334711/2062785 )
Mischa

1
เพื่อแก้ไขปัญหานี้และได้รับพฤติกรรมที่คาดหวัง (เช่นสีตัวยึดที่ถูกต้อง) ได้รับattributedStringของตัวอักษรตัวแรก (ถ้าไม่ว่างเปล่า) nilและกลับสีข้อความของมิฉะนั้น
Mischa

เหตุใดจึงแสดง 2 สีในกล่อง ฉันคิดว่านี่เป็นโหมดมืด แต่ก็ไม่ได้เป็นเช่นนั้น
asreerama

27

ใน 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])

24

รหัสนี้ใช้งานได้ใน Swift3:

yourTextFieldName .setValue(UIColor.init(colorLiteralRed: 80/255, green: 80/255, blue: 80/255, alpha: 1.0), forKeyPath: "_placeholderLabel.textColor")

แจ้งให้เราทราบหากคุณมีปัญหาใด ๆ


ด้วยเหตุผลบางอย่างนี้ล้มเหลวเมื่อฉันพยายามที่จะทำมากกว่า 1 textField อันแรกทำงานได้ดีจากนั้นมันจะขัดข้องใน textFields ที่ตามมาทั้งหมด ไม่แน่ใจว่าทำไม แต่ฉันหวังว่าฉันจะสามารถใช้วิธีนี้เพราะมันง่ายที่สุดและอ่านง่ายที่สุด
Tommy K

ไม่จำเป็นต้องใช้setValueเพื่อเข้าถึงทรัพย์สินส่วนตัว ใช้ API สาธารณะที่เหมาะสม
rmaddy

นี่คือคำตอบที่ดีที่สุด ... Tnx มาก
reza_khalafi

Xcode 10 / Swift 5 ไวยากรณ์ตัวอักษร:#colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
Lal Krishna

15

ในการตั้งค่าสีตัวยึดตำแหน่งหนึ่งครั้งสำหรับUITextFieldแอปทั้งหมดของคุณคุณสามารถทำได้:

UILabel.appearanceWhenContainedInInstancesOfClasses([UITextField.self]).textColor = UIColor.redColor()

วิธีนี้จะตั้งค่าสีที่ต้องการสำหรับTextFieldตัวยึดทั้งหมดในแอพทั้งหมด แต่จะใช้ได้ตั้งแต่ iOS 9 เท่านั้น

ไม่มีลักษณะที่ปรากฏเมื่อมีวิธีการ .... () ก่อน iOS 9 ในสวิฟท์แต่คุณสามารถใช้หนึ่งในวิธีแก้ไขปัญหาที่ปรากฏที่นี่เมื่อมีคอนสแตนท์ใน Swift


สิ่งนี้จะเปลี่ยนไม่เพียง แต่สีของพื้นที่ที่สำรองไว้ แต่จะเปลี่ยนเป็นสีข้อความด้วย
Timur Suleimanov

7

ในกรณีของฉันฉันใช้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)


6

Xcode 9.2 Swift 4

extension UITextField{
    @IBInspectable var placeHolderColor: UIColor? {
        get {
            return self.placeHolderColor
        }
        set {
            self.attributedPlaceholder = NSAttributedString(string:self.placeholder != nil ? self.placeholder! : "", attributes:[NSAttributedStringKey.foregroundColor: newValue!])
        }
    }
}

2
สิ่งนี้ใช้ไม่ได้ ผู้ทะเยอทะยานจะทำให้การเรียกซ้ำไม่สิ้นสุด
rmaddy

2
มันทำงานได้ดีใน 4 อย่างรวดเร็วฉันทำเบรกพอยต์ในรหัสและตรวจสอบ .. การเรียกซ้ำไม่สิ้นสุดไม่เกิดขึ้น
R. Mohan

1
ห้ามใช้สิ่งนี้ สิ่งนี้จะส่งผลให้เกิดการเรียกซ้ำแบบไม่สิ้นสุด ลอง: พิมพ์ (textField.placeHolderColor)
David Rees

5

สวิฟท์ 4:

txtControl.attributedPlaceholder = NSAttributedString(string: "Placeholder String...",attributes: [NSAttributedStringKey.foregroundColor: UIColor.gray])

วัตถุประสงค์ -C:

UIColor *color = [UIColor grayColor];
txtControl.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"Placeholder String..." attributes:@{NSForegroundColorAttributeName: color}];

4

นี่คือการดำเนินการอย่างรวดเร็วของฉันสำหรับ swift 4:

extension UITextField {
    func placeholderColor(_ color: UIColor){
        var placeholderText = ""
        if self.placeholder != nil{
            placeholderText = self.placeholder!
        }
        self.attributedPlaceholder = NSAttributedString(string: placeholderText, attributes: [NSAttributedStringKey.foregroundColor : color])
    }
}

ใช้เช่น:

streetTextField?.placeholderColor(AppColor.blueColor)

หวังว่ามันจะช่วยให้ใครบางคน!


Swift 4.2: self.attributedPlaceholder = NSAttributedString (สตริง: placeholderText, คุณลักษณะ: [NSAttributedString.Key.foregroundColor: color])
Sean Stayns

4

Swift 3 (อาจเป็น 2) คุณสามารถแทนที่ didSet บนตัวยึดตำแหน่งในUITextFieldคลาสย่อยเพื่อใช้แอ็ตทริบิวต์ด้วยวิธีนี้:

override var placeholder: String? {

    didSet {
        guard let tmpText = placeholder else {
            self.attributedPlaceholder = NSAttributedString(string: "")
            return
        }

        let textRange = NSMakeRange(0, tmpText.characters.count)
        let attributedText = NSMutableAttributedString(string: tmpText)
        attributedText.addAttribute(NSForegroundColorAttributeName , value:UIColor(white:147.0/255.0, alpha:1.0), range: textRange)

        self.attributedPlaceholder = attributedText
    }
}

4

สำหรับสวิฟท์

สร้างส่วนขยาย UITextField

extension UITextField{

    func setPlaceHolderColor(){
        self.attributedPlaceholder = NSAttributedString(string: self.placeholder!, attributes: [NSForegroundColorAttributeName : UIColor.white])
    }
}

หากคุณตั้งจากกระดานเรื่องราว

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!])
        }
    }
}

3

สำหรับ Swift 3 และ 3.1 มันใช้งานได้ดีอย่างสมบูรณ์:

passField.attributedPlaceholder = NSAttributedString(string: "password", attributes: [NSForegroundColorAttributeName: UIColor.white])

3

สำหรับSwift 4.0, X-code 9.1 เวอร์ชั่นหรือ iOS 11คุณสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อให้มีสีตัวยึดต่างกัน

textField.attributedPlaceholder = NSAttributedString(string: "Placeholder Text", attributes: [NSAttributedStringKey.foregroundColor : UIColor.white])

3

ฉันประหลาดใจที่เห็นว่ามีโซลูชั่นที่ไม่ดีอยู่ที่นี่จำนวนเท่าใด

นี่คือรุ่นที่ใช้งานได้เสมอ

สวิฟท์ 4.2

extension UITextField{
    @IBInspectable var placeholderColor: UIColor {
        get {
            return self.attributedPlaceholder?.attribute(.foregroundColor, at: 0, effectiveRange: nil) as? UIColor ?? .lightText
        }
        set {
            self.attributedPlaceholder = NSAttributedString(string: self.placeholder ?? "", attributes: [.foregroundColor: newValue])
        }
    }
}

เคล็ดลับ : หากคุณเปลี่ยนข้อความตัวยึดตำแหน่งหลังจากการตั้งค่าสี - สีจะรีเซ็ต


3

เพียงแค่เขียนโค้ดด้านล่างลงในเมธอด didFinishLaunchingWithOptions ของ Appdelegate ใช้สิ่งนี้หากคุณต้องการเปลี่ยนในแอพทั้งหมดที่เขียนด้วยSwift 4.2

UILabel.appearance(whenContainedInInstancesOf: [UITextField.self]).textColor = UIColor.white

1

การปรับปรุงคำตอบของ crubio สำหรับ Swift 4

เลือก UITextField และเปิดตัวตรวจสอบตัวตนทางด้านขวา:

คลิกที่ปุ่มเครื่องหมายบวกและเพิ่มแอ็ตทริบิวต์รันไทม์ใหม่: placeholderLabel.textColor (แทน _placeholderLabel.textColor)

ใช้สีเป็นประเภทและเลือกสี

หากคุณดำเนินโครงการของคุณคุณจะเห็นการเปลี่ยนแปลง


1

สำหรับ swift 4.2 และสูงกว่าคุณสามารถทำได้ดังนี้:

textField.attributedPlaceholder = NSAttributedString(string: "Placeholder Text", attributes: [NSAttributedString.Key.foregroundColor: UIColor.white])

1

ในกรณีของฉันฉันได้ทำดังนี้

extension UITextField {
    @IBInspectable var placeHolderColor: UIColor? {
        get {
            if let color = self.attributedPlaceholder?.attribute(.foregroundColor, at: 0, effectiveRange: nil) as? UIColor {
                return color
            }
            return nil
        }
        set (setOptionalColor) {
            if let setColor = setOptionalColor {
                let string = self.placeholder ?? ""
                self.attributedPlaceholder = NSAttributedString(string: string , attributes:[NSAttributedString.Key.foregroundColor: setColor])
            }
        }
    }
}

1

ที่นี่ฉันเขียน UIDesignable ทั้งหมดของ UITextField ด้วยความช่วยเหลือของรหัสนี้คุณสามารถเข้าถึงได้โดยตรงจากไฟล์ UI ตรวจสอบในกระดานเรื่องราว

@IBDesignable
class CustomTextField: UITextField {

@IBInspectable var leftImage: UIImage? {
    didSet {
        updateView()
    }
}

@IBInspectable var leftPadding: CGFloat = 0 {
    didSet {
        updateView()
    }
}

@IBInspectable var rightImage: UIImage? {
    didSet {
        updateView()
    }
}

@IBInspectable var rightPadding: CGFloat = 0 {
    didSet {
        updateView()
    }
}

private var _isRightViewVisible: Bool = true
var isRightViewVisible: Bool {
    get {
        return _isRightViewVisible
    }
    set {
        _isRightViewVisible = newValue
        updateView()
    }
}

func updateView() {
    setLeftImage()
    setRightImage()

    // Placeholder text color
    attributedPlaceholder = NSAttributedString(string: placeholder != nil ?  placeholder! : "", attributes:[NSAttributedString.Key.foregroundColor: tintColor])
}

func setLeftImage() {
    leftViewMode = UITextField.ViewMode.always
    var view: UIView

    if let image = leftImage {
        let imageView = UIImageView(frame: CGRect(x: leftPadding, y: 0, width: 20, height: 20))
        imageView.image = image
        // Note: In order for your image to use the tint color, you have to select the image in the Assets.xcassets and change the "Render As" property to "Template Image".
        imageView.tintColor = tintColor

        var width = imageView.frame.width + leftPadding

        if borderStyle == UITextField.BorderStyle.none || borderStyle == UITextField.BorderStyle.line {
            width += 5
        }

        view = UIView(frame: CGRect(x: 0, y: 0, width: width, height: 20))
        view.addSubview(imageView)
    } else {
        view = UIView(frame: CGRect(x: 0, y: 0, width: leftPadding, height: 20))
    }

    leftView = view
}

func setRightImage() {
    rightViewMode = UITextField.ViewMode.always

    var view: UIView

    if let image = rightImage, isRightViewVisible {
        let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
        imageView.image = image
        // Note: In order for your image to use the tint color, you have to select the image in the Assets.xcassets and change the "Render As" property to "Template Image".
        imageView.tintColor = tintColor

        var width = imageView.frame.width + rightPadding

        if borderStyle == UITextField.BorderStyle.none || borderStyle == UITextField.BorderStyle.line {
            width += 5
        }

        view = UIView(frame: CGRect(x: 0, y: 0, width: width, height: 20))
        view.addSubview(imageView)

    } else {
        view = UIView(frame: CGRect(x: 0, y: 0, width: rightPadding, height: 20))
    }

    rightView = view
}


@IBInspectable public var borderColor: UIColor = UIColor.clear {
    didSet {
        layer.borderColor = borderColor.cgColor
    }
}

@IBInspectable public var borderWidth: CGFloat = 0 {
    didSet {
        layer.borderWidth = borderWidth
    }
}

@IBInspectable public var cornerRadius: CGFloat = 0 {
    didSet {
        layer.cornerRadius = cornerRadius
    }
}
@IBInspectable public var bottomBorder: CGFloat = 0 {
    didSet {
       borderStyle = .none
        layer.backgroundColor = UIColor.white.cgColor

        layer.masksToBounds = false
     //   layer.shadowColor = UIColor.gray.cgColor
        layer.shadowOffset = CGSize(width: 0.0, height: 1.0)
        layer.shadowOpacity = 1.0
        layer.shadowRadius = 0.0
    }
}
@IBInspectable public var bottomBorderColor : UIColor = UIColor.clear {
    didSet {

        layer.shadowColor = bottomBorderColor.cgColor
        layer.shadowOffset = CGSize(width: 0.0, height: 1.0)
        layer.shadowOpacity = 1.0
        layer.shadowRadius = 0.0
    }
}
/// Sets the placeholder color
@IBInspectable var placeHolderColor: UIColor? {
    get {
        return self.placeHolderColor
    }
    set {
        self.attributedPlaceholder = NSAttributedString(string:self.placeholder != nil ? self.placeholder! : "", attributes:[NSAttributedString.Key.foregroundColor: newValue!])
    }
}

}

0

สำหรับสวิฟท์

func setPlaceholderColor(textField: UITextField, placeholderText: String) {
    textField.attributedPlaceholder = NSAttributedString(string: placeholderText, attributes: [NSForegroundColorAttributeName: UIColor.pelorBlack])
}

คุณสามารถใช้สิ่งนี้;

self.setPlaceholderColor(textField: self.emailTextField, placeholderText: "E-Mail/Username")

0

มันเป็นเรื่องเกี่ยวกับการปรับแต่งฟิลด์ข้อความของคุณให้เป็นส่วนตัว แต่อย่างไรก็ตามฉันจะแบ่งปันรหัสนี้จากหน้าอื่นและทำให้ดีขึ้นเล็กน้อย:

import UIKit
extension UITextField {
func setBottomLine(borderColor: UIColor, fontColor: UIColor, placeHolderColor:UIColor, placeHolder: String) {
    self.borderStyle = UITextBorderStyle.none
    self.backgroundColor = UIColor.clear
    let borderLine = UIView()
    let height = 1.0
    borderLine.frame = CGRect(x: 0, y: Double(self.frame.height) - height, width: Double(self.frame.width), height: height)
    self.textColor = fontColor
    borderLine.backgroundColor = borderColor
    self.addSubview(borderLine)
    self.attributedPlaceholder = NSAttributedString(
        string: placeHolder,
        attributes: [NSAttributedStringKey.foregroundColor: placeHolderColor]
    )
  }
}

และคุณสามารถใช้สิ่งนี้:

self.textField.setBottomLine(borderColor: lineColor, fontColor: fontColor, placeHolderColor: placeHolderColor, placeHolder: placeHolder)

รู้ว่าคุณมีการเชื่อมต่อกับUITextFieldViewController

ที่มา: http://codepany.com/blog/swift-3-custom-uitextfield-with-single-line-input/


0

ป้อนคำอธิบายรูปภาพที่นี่

สำหรับวัตถุประสงค์ C :

UIColor *color = [UIColor colorWithRed:0.44 green:0.44 blue:0.44 alpha:1.0];
 emailTextField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"Friend's Email" attributes:@{NSForegroundColorAttributeName: color}];

สำหรับSwift :

emailTextField.attributedPlaceholder = NSAttributedString(string: "Friend's Email",
                             attributes: [NSAttributedString.Key.foregroundColor: UIColor.white])

0

รหัส C วัตถุประสงค์สำหรับการเปลี่ยนสีข้อความของตัวยึดตำแหน่ง

ครั้งแรกที่นำเข้าคลาส objc / runtime นี้ -

#import <objc/runtime.h>

จากนั้นแทนที่ชื่อฟิลด์ข้อความของคุณ -

Ivar ivar =  class_getInstanceVariable([UITextField class], "_placeholderLabel");
UILabel *placeholderLabel = object_getIvar(YourTxtField, ivar);
placeholderLabel.textColor = [UIColor whiteColor];


0

สำหรับ iOS13

+(void)ChangeplaceholderColor :(UITextField *)TxtFld andColor:(UIColor*)color { 
    NSMutableAttributedString *placeholderAttributedString = [[NSMutableAttributedString alloc] initWithAttributedString:TxtFld.attributedPlaceholder];
       [placeholderAttributedString addAttribute:NSForegroundColorAttributeName value:color range:NSMakeRange(0, [placeholderAttributedString length])];
       TxtFld.attributedPlaceholder = placeholderAttributedString;

}

0

ใช้แบบนี้ในสวิฟท์

 let placeHolderText = textField.placeholder ?? ""
 let str = NSAttributedString(string:placeHolderText!, attributes: [NSAttributedString.Key.foregroundColor :UIColor.lightGray])
 textField.attributedPlaceholder = str

ในวัตถุประสงค์ C

NSString *placeHolder = [textField.placeholder length]>0 ? textField.placeholder: @"";
NSAttributedString *str = [[NSAttributedString alloc] initWithString:placeHolder attributes:@{ NSForegroundColorAttributeName : [UIColor lightGrayColor] }];
textField.attributedPlaceholder = str;

0
    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!])
                }
            } 
}

-1

ใช้สิ่งนี้เพื่อเพิ่มตัวยึดที่มีสาเหตุมาจาก:

let attributes : [String : Any]  = [ NSForegroundColorAttributeName: UIColor.lightGray,
                                     NSFontAttributeName : UIFont(name: "Helvetica Neue Light Italic", size: 12.0)!
                                   ]
x_textfield.attributedPlaceholder = NSAttributedString(string: "Placeholder Text", attributes:attributes)

-1

สำหรับ Swift 4

txtField1.attributedPlaceholder = NSAttributedString(string: "-", attributes: [NSAttributedStringKey.foregroundColor: UIColor.white])

1
นี่เป็นคำซ้ำก่อนหน้านี้หลายคำ ไม่จำเป็นต้องโพสต์คำตอบที่ซ้ำกัน
rmaddy

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.