1

Apple ドキュメントから理解したように、UITextView の attributedText プロパティ:

デフォルトでは、このプロパティは nil です。このプロパティに新しい値を割り当てると、テキスト プロパティの値も同じ文字列データに置き換えられますが、書式設定情報はありません。さらに、新しい値を割り当てると、font、textColor、および textAlignment プロパティの値が更新され、属性付き文字列の位置 0 から始まるスタイル情報が反映されます。

したがって、異なる場所に複数の属性を持つコードで attributedString を追加することはできません。

誰かがiOS6のコードで次の効果​​を作成するのを手伝ってもらえますか? これは nib ファイルを使用し、UITextView のテキスト部分の範囲属性を変更することで可能ですが、コードで効果を再現することはできません。

<'font systemFontOfSize=18>目的の <'/font>効果<'textColor = [UIColor redColor]></'/textColor> y コードで記述します。

タグが属性に対応するとします。

PS UITextView で AutoLayout 機能を使用しようとしているので、CATextLayers を使用したくありません。

4

1 に答える 1

4

必要なすべての属性を含む NSDictionary で NSAttributedString を構築できます。

NSAttributedString* attString = [[NSAttributedString alloc] 
               initWithString: @"Desired effect to be written by code" 
                   attributes: (NSDictionary*)attributes];

または、変更可能なサブクラス NSMutableAttributedString を使用します。

NSMutableAttributedString *attString = [[NSMutableAttributedString alloc]  
               initWithString: @"Desired effect to be written by code"];

    [attString addAttribute: NSForegroundColorAttributeName 
                      value: [UIColor redColor] 
                      range: NSMakeRange(15,15)];

…などなど

myTextView.attributedText = attString;

各属性は、文字列の NSRange (場所、長さ) に適用されます。異なる属性タイプ (色、フォント サイズなど) は、異なる範囲に重なる場合があります。

update
NSMutableAttributedString の例を使用します。NSAttributedString's initWithString:attributes文字列の範囲全体に属性を適用しますが、これは避けようとしているものです。混乱して申し訳ありません。

于 2012-12-18T12:28:08.837 に答える