如何从NSAttributed String中分离属性并将这些属性应用于其他字符串?

时间:2016-05-26 09:16:08

标签: ios swift nsattributedstring swift2.2

例如。就像我们有一个NSAttributed字符串,我们需要分离字符串和属性,然后在相同长度的其他字符串上使用这些属性。

2 个答案:

答案 0 :(得分:2)

NSAttributedString可能对字符串的不同范围具有不同的属性。

要提取这些属性,您可以使用enumerateAttributesInRange方法。

我们准备一组元组来保存结果:

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

每个元组将保存NSAttributedString中特定范围的属性。

现在我们迭代NSAttributedString并使用结果填充数组:

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

填充数组后,您可以访问内容:

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

从那里,您可以创建具有以下属性的新属性字符串:您可以获得NSAttributedString中每个属性的范围和相应属性。

答案 1 :(得分:0)

您应该从NSAttributedString

查看此方法
attributesAtIndex(location: Int, effectiveRange range: NSRangePointer) -> [String : AnyObject]

通过在NSAttributedString处调用此方法,您将收到范围内应用的所有属性。只需将所有字符串指定为范围。然后使用这些属性创建新的属性字符串。