Karşılaştığım sorun, bir TextView'daki belirli bir metnin textColor'unu değiştirebilmek istemem. Birleştirilmiş bir dize kullanıyorum ve yalnızca TextView metnine eklediğim dizeleri istiyorum. Görünüşe göre kullanmak istediğim şey NSMutableAttributedString
, ancak bunu Swift'de nasıl kullanacağıma dair herhangi bir kaynak bulamıyorum. Şimdiye kadar sahip olduğum şey şuna benzer:
let string = "A \(stringOne) with \(stringTwo)"
var attributedString = NSMutableAttributedString(string: string)
textView.attributedText = attributedString
Buradan, textColor'larının değiştirilmesi gereken kelime aralığını bulmam ve bunları atıfta bulunulan dizeye eklemem gerektiğini biliyorum. Bilmem gereken şey, attributedString'den doğru dizeleri nasıl bulacağım ve sonra textColor'u nasıl değiştireceğim.
Çok düşük bir derecelendirmeye sahip olduğum için kendi sorumu cevaplayamıyorum, ama bulduğum cevap işte burada
Bazı kodların çevirisini yaparak kendi cevabımı buldum
NSAttributedString'de alt dizelerin özniteliklerini değiştirme
İşte Swift'deki uygulama örneği:
let string = "A \(stringOne) and \(stringTwo)"
var attributedString = NSMutableAttributedString(string:string)
let stringOneRegex = NSRegularExpression(pattern: nameString, options: nil, error: nil)
let stringOneMatches = stringOneRegex.matchesInString(longString, options: nil, range: NSMakeRange(0, attributedString.length))
for stringOneMatch in stringOneMatches {
let wordRange = stringOneMatch.rangeAtIndex(0)
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.nameColor(), range: wordRange)
}
textView.attributedText = attributedString
Birden çok Dizenin textColor'unu değiştirmek istediğim için, bunu işlemek için bir yardımcı işlev yapacağım, ancak bu, textColor'u değiştirmek için çalışır.