2016-05-26 4 views

答えて

1

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内にそれぞれの範囲と対応する属性があります。

0

あなたが範囲に適用されるすべての属性を受け取ることになりますNSAttributedStringでこのメソッドを呼び出すことによりNSAttributedString

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

から、この方法を見てみる必要があります。すべての文字列を範囲として指定するだけです。そして、これらの属性で新しい属性文字列を作成します。

関連する問題