例如。就像我们有一个NSAttributed字符串,我们需要分离字符串和属性,然后在相同长度的其他字符串上使用这些属性。
答案 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处调用此方法,您将收到范围内应用的所有属性。只需将所有字符串指定为范围。然后使用这些属性创建新的属性字符串。