0
for i in 0...attString.length-1
{
attString.enumerateAttribute(NSBackgroundColorAttributeName, in: NSMakeRange(i,1), options: NSAttributedString.EnumerationOptions(rawValue: 0)) { (value, range, stop) -> Void in
if let exValue = value as? UIColor
{
if self.compareColors(c1: exValue, c2: (UIColor(hex: 0x2e4270))) ||
self.compareColors(c1: exValue, c2: (UIColor(hex: 0xc0e1ff))) ||
self.compareColors(c1: exValue, c2: (UIColor(hex: 0x7a99b8))) ||
self.compareColors(c1: exValue, c2: (UIColor(hex: 0xaad5fb)))
{
aRange = NSMakeRange(i, 1)
myValue = self.styles.blueHighlightColor()
//DispatchQueue.main.async {
mutableAttString.addAttribute(attributeName, value: myValue, range: aRange)
//}
self.saveChanges = true
}
else if self.compareColors(c1: exValue, c2: (UIColor(hex: 0x385324))) ||
self.compareColors(c1: exValue, c2: (UIColor(hex: 0xbde970))) ||
self.compareColors(c1: exValue, c2: (UIColor(hex: 0x88a752)))
{
aRange = NSMakeRange(i, 1)
myValue = self.styles.greenHighlightColor()
//DispatchQueue.main.async {
mutableAttString.addAttribute(attributeName, value: myValue, range: aRange)
// }
self.saveChanges = true
}
else if self.compareColors(c1: exValue, c2: (UIColor(hex: 0x624b85))) ||
self.compareColors(c1: exValue, c2: (UIColor(hex: 0xd6affb))) ||
self.compareColors(c1: exValue, c2: (UIColor(hex: 0x997eb8))) ||
self.compareColors(c1: exValue, c2: (UIColor(hex: 0xd6affb)))
{
aRange = NSMakeRange(i, 1)
myValue = self.styles.pinkHighlightColor()
// DispatchQueue.main.async {
mutableAttString.addAttribute(attributeName, value: myValue, range: aRange)
//}
self.saveChanges = true
}
else if self.compareColors(c1: exValue, c2: (UIColor(hex: 0x7b5b15))) ||
self.compareColors(c1: exValue, c2: (UIColor(hex: 0xfbe769))) ||
self.compareColors(c1: exValue, c2: (UIColor(hex: 0xb4a64d)))
{
aRange = NSMakeRange(i, 1)
myValue = self.styles.yellowHighlightColor()
// DispatchQueue.main.async {
mutableAttString.addAttribute(attributeName, value: myValue, range: aRange)
//}
self.saveChanges = true
}
}
}
} // For loop end
私はすべてのNSAttributed文字を反復処理し、その背景色をチェックしています。それがokか、if文で定義されていない他の色があれば。それはうまく動作しますが、大きなテキストを入力するとちょっと遅いです。私はDispatchQueue.concurrentPerform(iterations:execute:)
を使用してみましたが、クラッシュしました。理由はありません。Grand Center Dispatch For Loop
ありがとう!今はとても速いです。あなたはそれを作る方法を示すことができますか? – Elita