2016-05-26 9 views

Antwort

1

Ein NSAtributedString kann unterschiedliche Attribute für verschiedene Bereiche der Zeichenfolge aufweisen.

Um diese Attribute zu extrahieren, können Sie die Methode enumerateAttributesInRange verwenden.

Wir bereiten eine Reihe von Tupeln, die Ergebnisse zu halten:

var extractedAttributes = [(attributes: [String:AnyObject], range: NSRange)]() 

Jedes Tupel werden die Attribute für einen bestimmten Bereich in der NSAttributedString halten.

Jetzt iterieren wir auf dem NSAttributedString und das Array mit den Ergebnissen füllen:

attributedString.enumerateAttributesInRange(NSRange(location: 0, length: attributedString.length), options: NSAttributedStringEnumerationOptions(rawValue: 0)) { (dict, range, stopEnumerating) in 
    extractedAttributes.append((attributes: dict, range: range)) 
} 

Sobald das Array gefüllt ist, können Sie die Inhalte zugreifen:

for item in extractedAttributes { 
    print(item.attributes) 
    print(item.range) 
} 

Und von dort haben Sie alle Sie müssen neue attributierte Strings mit diesen Attributen erstellen: Sie haben den Bereich und die entsprechenden Attribute für jeden im NSAttributedString.

0

Sie sollten bei dieser Methode von NSAttributedString

attributesAtIndex(location: Int, effectiveRange range: NSRangePointer) -> [String : AnyObject] 

Durch den Aufruf dieser Methode bei NSAttributedString einen Blick darauf werfen Sie alle Attribute in Bereich angewendet erhalten. Geben Sie einfach alle Zeichenfolgen als Bereich an. Und dann erstellen Sie eine neue Attribut-Zeichenfolge mit diesen Attributen.

Verwandte Themen