UILabelリッチテキスト設定

2805 ワード

iOSの開発では、異なる色とフォントを表示したり、いくつかの文字に削除線や下線を付けたりする必要があることがよくあります.前にネット上でいくつかの資料を探して、あるのはUILabelのtextLayerを再描画して、あるのはhtml 5で実現して、すべて比較的に面倒で、その上多くのUILabelの属性も役に立たなくて、効果はすべて理想的ではありません.NSMuttableAttstring(属性付き文字列)は、上記の要件のいくつかを簡単に実現できることが後に分かった.
  •           
    

  • インスタンス化方法:
    文字列を使用した初期化- (id)initWithString:(NSString *)str;例:NSMutableAttributedString *AttributedStr = [[NSMutableAttributedStringalloc]initWithString:@" "];- (id)initWithString:(NSString *)str attributes:(NSDictionary *)attires;
    辞書には、NSDictionary *attributeDict = [NSDictionarydictionaryWithObjectsAndKeys: [UIFontsystemFontOfSize:15.0],NSFontAttributeName, [UIColorredColor],NSForegroundColorAttributeName, NSUnderlineStyleAttributeName,NSUnderlineStyleSingle,nil]; NSMutableAttributedString *AttributedStr = [[NSMutableAttributedStringalloc]initWithString:@" " attributes:attributeDict];- (id)initWithAttributedString:(NSAttributedString *)attester;NSAttributedStringを使用して初期化されたNSMutablesString、NSStringと同様の属性名と属性値が格納されています.
    使用方法:ある範囲内の文字に複数の属性を設定- (void)setAttributes:(NSDictionary *)attrs range:(NSRange)range;ある範囲内の文字にある属性を追加- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;ある範囲内の文字に複数の属性を追加- (void)addAttributes:(NSDictionary *)attrs range:(NSRange)range;ある範囲内のある属性を削除- (void)removeAttribute:(NSString *)name range:(NSRange)range;
  •         
    
  • NSFontAttributeNameフォントNSParagraphStyleAttributeName段落フォーマットNSForegroundColorAttributeNameフォント色NSBackgroundColorAttributeName背景色NSStrikethroughStyleAttributeName削除線フォーマットNSUnderlineStyleAttributeName下線フォーマットNSStrokeColorAttributeName削除線色NSStrokeWidthAttributeName削除線幅NSShadowAttributeNameシャドウの詳細はアップルの公式説明ドキュメントを参照
  • 使用例
  • UILabel *testLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 320, 30)]; testLabel.backgroundColor = [UIColor lightGrayColor]; testLabel.textAlignment = NSTextAlignmentCenter; NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:@" "]; [AttributedStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:16.0] range:NSMakeRange(2, 2)]; [AttributedStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(2, 2)]; testLabel.attributedText = AttributedStr; [self.view addSubview:testLabel];
    また、他のtextを設定できるコントロール(UIButton,UItextFieldなど)にもこのプロパティがあります.この記事は詳細ではありませんが、簡単に説明するだけで、他の効果の実装には参照APIでより多くのプロパティと使用方法があります.テキストリンク