swift如何更改我 UITextView 溢的字符颜色?

标签: UITextView ios Swift
发布时间: 2016/5/8 20:22:59
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想有以下结果 ︰

梦想的结果

我尝试使用这段代码,但没有成功 ︰

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

    }
}

我在这篇文章中看到 ︰中字符的查找索引 Swift 字符串

我不应该转换为 NSString,因为可以 bug 与表情符号 😐

PS ︰ 对不起我的英语,我仍然在学习。

解决方法 1:

请使用以下功能来实现你期望的结果。 声明最大长度的文本,您想要显示在默认以外的文本的颜色会变成红色。

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;
  }
}
官方微信
官方QQ群
31647020