import UIKit extension UITextField { /// Add a trailing placeholder label that tracks the text as it changes func addTrailingPlaceholder(_ placeholder: String) { let label = UILabel() label.text = placeholder label.alpha = 0.3 label.isHidden = true addSubview(label) addAction(UIAction { [weak self] _ in guard let self = self else { return } label.font = self.font label.frame = self.textRect(forBounds: self.bounds) label.frame.origin.x = (self.text ?? "").size(withAttributes: [ .font: self.font as Any ]).width label.isHidden = !self.hasText }, for: .editingChanged) } }