您的位置:首页 > 移动开发 > IOS开发

iOS AttributedString 富文本

2016-11-08 10:48 92 查看

前言

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];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息