1. 程式人生 > >iOS AttributedString 富文字

iOS AttributedString 富文字

前言

AttributedString可以分為NSAttributedString和NSMutableAttributedString兩種。在使用中通過將AttributedString賦值給控制元件的 attributedText 屬性來新增文字樣式。UILabel、UITextField和UITextView,都可以使用該屬性。

1、設定常規屬性

 NSString *str = @"大海因為有了波瀾所以更加雄偉壯闊,人生因為有了遺憾所以更加珍惜懂得。倘若未曾有過遺憾的痛。今天也不至於學會懂。倘若未曾有過遺憾的傷,今天也不至於堅強。誰今天的堅強,不是用曾經的那些憾缺構築起來的成長。"
; //建立NSMutableAttributedString NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:str]; //設定字型大小和指定範圍 [attStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:30.0f] range:NSMakeRange(0, 2)]; //設定文字顏色 [attStr addAttribute:NSForegroundColorAttributeName value:[UIColor
redColor] range:NSMakeRange(0, 2)]; //設定文字背景色 [attStr addAttribute:NSBackgroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(0, 2)]; //新增下劃線 [attStr addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, 2
)]; //設定字元之間的間距 [attStr addAttribute:NSKernAttributeName value:@(5) range:NSMakeRange(0, str.length-1)]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, self.view.frame.size.width-20, 20)]; label.attributedText = attStr; //設定label的富文字 label.numberOfLines = 0; //自動換行 [label sizeToFit]; //label高度自適應 [self.view addSubview:label];

2、設定段落屬性

 NSString *str = @"大海因為有了波瀾所以更加雄偉壯闊,人生因為有了遺憾所以更加珍惜懂得。\n倘若未曾有過遺憾的痛。今天也不至於學會懂。\n倘若未曾有過遺憾的傷,今天也不至於堅強。\n誰今天的堅強,不是用曾經的那些憾缺構築起來的成長。";

    //建立NSMutableAttributedString
    NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:str];

    //設定段落的樣式
    NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];

    //設定行間距
    paragraph.lineSpacing = 10;

    //設定段落間距
    paragraph.paragraphSpacing = 20.0f;

    //設定對齊方式
    paragraph.alignment = NSTextAlignmentLeft;

    //設定段落首行縮排
    paragraph.firstLineHeadIndent = 30;

    //設定文字全部縮排
    paragraph.headIndent = 30;

    //新增段落設定
    [attStr addAttribute:NSParagraphStyleAttributeName value:paragraph range:NSMakeRange(0, str.length)];


    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, self.view.frame.size.width-20, 20)];
    label.attributedText = attStr; //設定label的富文字
    label.numberOfLines = 0; //自動換行
    [label sizeToFit]; //label高度自適應
    [self.view addSubview:label];