измените цвет дополнительных символов в поле UITextField

#ios #swift

Вопрос:

Как я могу изменить цвет только дополнительных букв при вводе в поле UITextField в Swift и вернуть цвет обратно при удалении? Я смог изменить цвет всех букв только при превышении лимита

 class ViewController: UIViewController, UITextFieldDelegate {     @IBOutlet weak var inputLimitField: UITextField!  @IBOutlet weak var characterCountLabel: UILabel!    override func viewDidLoad() {  super.viewDidLoad()  characterCountLabel.text = "10/10"  inputLimitField.delegate = self   }    func checkRemainingChars() {  let allowedChars = 10  let charsInTextView = -(inputLimitField.text?.count ?? 0)  let remainingChars = allowedChars   charsInTextView  characterCountLabel.textColor = .black  inputLimitField.textColor = .black  inputLimitField.layer.borderColor = UIColor.systemGray3.cgColor  if remainingChars lt; 0 {  characterCountLabel.textColor = .red  inputLimitField.textColor = .red  inputLimitField.layer.borderColor = UIColor.red.cgColor  inputLimitField.layer.cornerRadius = 6.0  inputLimitField.layer.borderWidth = 1.0  }  characterCountLabel.text = ("(String(remainingChars))/10")  }    func textFieldDidChangeSelection(_ textField: UITextField) {  checkRemainingChars()  } }  

это то, что я ожидал получить , введите описание изображения здесь

и это то, что я действительно получаю, введите описание изображения здесь

p.s. также я не могу поставить счетчик букв в углу через границу TF, потому что при импорте компонентов материалов возникает ошибка: No such module 'MaterialComponents'

Комментарии:

1. Вам нужно использовать NSAttributedString для раскрашивания только некоторые буквы. Затем используйте yourTextField.attributedText для его установки/извлечения. С String / yourTextField.text это невозможно, потому что это просто список букв, нет никаких эффектов «рендеринга», таких как цвета, хотя NSAttributedString это дает такую возможность. Обратите внимание, что затем он может также добавлять другие эффекты для символов: шрифт (затем жирный/курсив/размер), подчеркивание и т.д.

2. У вас уже была та же тема около 8 часов назад. Подсказка: NSMutableAttributedString .

3. Подсказка 2: если let text = inputLimitField.text { let allowedText = text.prefix(allowedChars) }

4. Подсказка 3: пусть notAllowedText = текст.суффикс(text.count — разрешенные символы)