2017-02-07 20 views
0

How to change color of text stirngs inside UITextView in Swift3変更部分文字列の色が、フォント設定は

をリセットしている私は、上記のURLを参照して、このような部分文字列の色を変更しようとしました。

enter image description here

func textViewDidChange(_ textView: UITextView, pageIndex: Int) { 
    let attrStr = NSMutableAttributedString(string: textView.text) 
    let inputLength = attrStr.string.characters.count 
    let searchString = self.emphasisingWordList[pageIndex] 
    let searchLength = searchString.characters.count 
    var range = NSRange(location: 0, length: attrStr.length) 

    while (range.location != NSNotFound) { 
     range = (attrStr.string as NSString).range(of: searchString, options: [], range: range) 
     if (range.location != NSNotFound) { 
      attrStr.addAttribute(NSForegroundColorAttributeName, value: UIColor.orange, range: NSRange(location: range.location, length: searchLength)) 
      range = NSRange(location: range.location + range.length, length: inputLength - (range.location + range.length)) 
      textView.attributedText = attrStr 
     } 
    } 
} 

しかし、私は、フォントサイズと色が帰属テキストが設定されている場合(黒)をデフォルトにリセットされ見つかりました。

私はこれらの行をコードの最後に追加しましたが、もちろん文字列全体が有効になります。

self.sloganTextView.font = UIFont.systemFont(ofSize: 35) 
self.sloganTextView.textColor = UIColor.white 

それぞれの属性の色を1つずつ変更する必要はありますか?

多くの人が既に述べたように、selectableはtrueに設定されています。

答えて

0

あなたはこのコードを試すことができます。

var strName: String = "ABC" 
var strTitle: String = "XYZ" 
let commentString = NSMutableAttributedString(string: strTitle + " \(strName)") 
commentString.addAttribute(NSForegroundColorAttributeName, value: UIColor.blue, range: NSRange(location: 0, length: (strTitle.characters.count))) 
commentString.addAttribute(NSForegroundColorAttributeName, value: UIColor.orange, range: NSRange(location: (strTitle.characters.count), length: (strName.characters.count) + 1)) 
self.txtView.attributedText = commentString 

は、あなたがこのコードのヘルプを願っています。

関連する問題