ปัญหาที่ฉันพบคือฉันต้องการเปลี่ยน textColor ของข้อความบางข้อความใน TextView ฉันใช้สตริงที่ต่อกันและต้องการเพียงแค่สตริงที่ฉันต่อท้ายข้อความของ TextView ดูเหมือนว่าสิ่งที่ฉันต้องการใช้คือNSMutableAttributedString
แต่ฉันไม่พบแหล่งข้อมูลใด ๆ เกี่ยวกับวิธีใช้สิ่งนี้ใน Swift สิ่งที่ฉันมีจนถึงตอนนี้คือ:
let string = "A \(stringOne) with \(stringTwo)"
var attributedString = NSMutableAttributedString(string: string)
textView.attributedText = attributedString
จากที่นี่ฉันรู้ว่าฉันต้องหาช่วงของคำที่ต้องมีการเปลี่ยนแปลง textColor แล้วเพิ่มลงในสตริงที่มาจากแหล่ง สิ่งที่ฉันต้องรู้คือวิธีค้นหาสตริงที่ถูกต้องจาก attributedString แล้วเปลี่ยน textColor
เนื่องจากฉันมีคะแนนต่ำเกินไปฉันจึงไม่สามารถตอบคำถามของตัวเองได้ แต่นี่คือคำตอบที่ฉันพบ
ฉันพบคำตอบของตัวเองโดยแปลจากการแปลโค้ดบางส่วนจาก
เปลี่ยนแอตทริบิวต์ของสตริงย่อยใน NSAttributedString
นี่คือตัวอย่างการใช้งานใน Swift:
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
เนื่องจากฉันต้องการเปลี่ยน textColor ของหลาย ๆ สตริงฉันจะสร้างฟังก์ชันตัวช่วยเพื่อจัดการสิ่งนี้ แต่มันใช้ได้กับการเปลี่ยน textColor