天天看點

Label--關于Label富文本

一、label的富文本屬性

label.attributedText
           

需要注意一點:如果一個label設定了富文本這個屬性,那它其他的設定都将失效。

二、富文本對象的建立

//初始化富文本對象的方法一:
    - (id)initWithString:(NSString *)str;
           
//初始化富文本對象的同時設定富文本對象的屬性
    - (id)initWithString:(NSString *)str attributes:(NSDictionary *)attrs;
           

三、設定Label的富文本對象

方法一:建立富文本對象後逐個添加富文本對象的屬性

UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(20, 30, 300, 80)];
    label.backgroundColor = [UIColor lightGrayColor];
    //初始化富文本對象:
    NSMutableAttributedString * attributedStr = [[NSMutableAttributedString alloc] initWithString:@"我們都有一個家名字叫中國"];
    //給富文本添加屬性1-字型大小
    [attributedStr addAttribute:NSFontAttributeName
                          value:[UIFont systemFontOfSize:16.0]
                          range:NSMakeRange(2, 2)];
    //給富文本添加屬性2-字型顔色
    [attributedStr addAttribute:NSForegroundColorAttributeName
                          value:[UIColor redColor]
                          range:NSMakeRange(2, 2)];
    //給富文本添加屬性3-下劃線
    [attributedStr addAttribute:NSUnderlineStyleAttributeName
                          value:@(NSUnderlineStyleSingle)
                          range:NSMakeRange(2, 2)];
    //設定label的富文本屬性
    label.attributedText = attributedStr;
    [self.view addSubview:label];
           

方法二:建立富文本對象後統一設定富文本對象的屬性

UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(20, 30, 300, 80)];
    label.backgroundColor = [UIColor lightGrayColor];
    //初始化富文本對象
    NSMutableAttributedString * attributedStr = [[NSMutableAttributedString alloc] initWithString:@"我們都有一個家名字叫中國"];
    //富文本的屬性通過字典的形式傳入
    NSDictionary *attributeDict = [NSDictionary dictionaryWithObjectsAndKeys:
                                   [UIFont systemFontOfSize:16.0],NSFontAttributeName,//字型
                                   [UIColor redColor],NSForegroundColorAttributeName,//字型顔色
                                   [UIColor greenColor],NSBackgroundColorAttributeName,//字型背景色
                                   @(NSUnderlineStyleSingle),NSUnderlineStyleAttributeName,//下劃線
                                   @(NSUnderlineStyleSingle),NSStrikethroughStyleAttributeName,//删除線
                                   [UIColor blueColor],NSUnderlineColorAttributeName,//下劃線顔色
                                   [UIColor yellowColor],NSStrikethroughColorAttributeName,//删除線顔色
                                   [NSURL URLWithString:@"http://www.baidu.com"],NSLinkAttributeName,
                                   nil];
    //統一設定富文本對象的屬性
    [attributedStr addAttributes:attributeDict range:NSMakeRange(2, 2)];
    //或者也可以使用下面的方法
    [attributedStr setAttributes:attributeDict range:NSMakeRange(4, 2)];
    //設定label的富文本屬性
    label.attributedText = attributedStr;
    [self.view addSubview:label];
           

方法三:建立富文本對象的同時就添加屬性

//富文本的屬性通過字典的形式傳入
    NSDictionary *attributeDict = [NSDictionary dictionaryWithObjectsAndKeys:
                                   [UIFont systemFontOfSize:16.0],NSFontAttributeName,//字型大小
                                   [UIColor redColor],NSForegroundColorAttributeName,//字型顔色
                                   @(NSUnderlineStyleSingle),NSUnderlineStyleAttributeName,//下劃線
                                   nil];
    //初始化富文本對象的同時設定富文本對象的屬性
    NSMutableAttributedString * attributedStr = [[NSMutableAttributedString alloc]initWithString:@"我們都有一個家名字叫中國" attributes:attributeDict];
    //設定label的富文本屬性
    label.attributedText = attributedStr;
    [self.view addSubview:label];
           

PS: 同理一般有 add 方法就會有 remove 方法,下面是富文本對象的其它方法

- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;//添加一個屬性
- (void)addAttributes:(NSDictionary<NSString *, id> *)attrs range:(NSRange)range;//添加一組屬性
- (void)removeAttribute:(NSString *)name range:(NSRange)range;//移除一個屬性
           

四、常見的屬性及說明

NSFontAttributeName

字型

NSParagraphStyleAttributeName

段落格式

NSForegroundColorAttributeName

字型顔色

NSBackgroundColorAttributeName

背景顔色

NSStrikethroughStyleAttributeName

删除線格式

NSUnderlineStyleAttributeName

下劃線格式

NSStrokeColorAttributeName

删除線顔色

NSStrokeWidthAttributeName

删除線寬度

NSShadowAttributeName

陰影

參考文章:

http://www.tuicool.com/articles/QZ3If2

http://my.oschina.net/u/2340880/blog/397500

http://www.itstrike.cn/Question/c688711b-0eba-465f-9880-35076f5ba1c2.html//關于link富文本 textView

http://www.bubuko.com/infodetail-382485.html