2016-01-27 2 views
1

Я хотел бы иметь результат последующего:Как изменить цвет переполненных символов моего UITextView?

Dream result

Я пытался использовать этот код, но никакого успеха:

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { 
    if range.location > 159 { 

     let attributedString = NSMutableAttributedString(string: bioTextView.text) 

     let range2 = (bioTextView.text as NSString).rangeOfString(bioTextView.text) 

     attributedString.addAttributes([NSForegroundColorAttributeName: UIColor.flatRedColor(), NSFontAttributeName: UIFont(name: "Helvetica Neue", size: 14)!], range: range2) 

     bioTextView.attributedText = attributedString 

    } 
} 

Я видел в этом посте: Finding index of character in Swift String

Это Я не должен конвертироваться в NSString, потому что может ошибка с emoji

PS: Извините, о моем английском, я Я все еще учился.

ответ

4

Для достижения желаемого результата воспользуйтесь следующей функцией. Объявите максимальную длину текста, который вы хотите отображать по умолчанию, кроме этого текста будет красным.

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { 

let maxLength = 159 

if range.location > maxLength { 

    let index = textView.text.startIndex.advancedBy(maxLength) 

    let mainString = textView.text.substringToIndex(index) 

    let mainAttributedString = NSMutableAttributedString (string: mainString, attributes: [NSForegroundColorAttributeName: UIColor.darkGrayColor(), NSFontAttributeName: UIFont(name: "Helvetica Neue", size: 14)!]) 

    let redAttributedString = NSAttributedString(string: textView.text.substringFromIndex(index), attributes: [NSForegroundColorAttributeName: UIColor.redColor(), NSFontAttributeName: UIFont(name: "Helvetica Neue", size: 14)!]) 

    mainAttributedString.appendAttributedString(redAttributedString) 

    textView.attributedText = mainAttributedString; 
    } 
} 
+0

Большое вам спасибо! Это действительно работает! Я только что добавил в код следующий код: 'let index = textView.text.startIndex.advancedBy (maxLength) .successor()' Это потому, что раньше рисовала персонажа. –

Смежные вопросы