ios富文本的简单使用 AttributedString
富文本,顾名思义就是丰富的文本格式,本文demo使用NSMutableAttributedString
//获取富文本
NSMutableAttributedString*attributeString_atts=[[NSMutableAttributedString alloc]initWithString:string];
//背景色
UIColor *backgroundColor=[UIColor whiteColor];
//字体
UIFont *font=[UIFont fontWithName:@"STHeitiSC-Light" size:18.0];
//偏移量
NSNumber *baseLineOffset=[NSNumber numberWithFloat:10.0];
//文本颜色
UIColor *foregroundColor=[UIColor blackColor];
//字间距
NSNumber *kern=[NSNumber numberWithFloat:1.5];
//连体字
NSNumber *ligature=[NSNumber numberWithFloat:];
//超链接文本
NSURL *linkURL=[NSURL URLWithString:@"www.baidu.com"];
//下划线格式
NSNumber *underLine=[NSNumber numberWithInt:NSUnderlineStyleSingle];
//段落格式 段落中有更多段落的格式
NSMutableParagraphStyle *paragraphStyle=[[NSMutableParagraphStyle alloc]init];//新起行缩进
// [paragraphStyle setHeadIndent:10.0];
//首行缩进
[paragraphStyle setFirstLineHeadIndent:21.0]; //行高倍数因子
[paragraphStyle setLineHeightMultiple:1.3];
//行间距
[paragraphStyle setLineSpacing:10.0];
//上述两属性说明:行间距是每行之间距离,计算高度时,可能出现偏差;行高倍数因子,行高固定。
//断行 默认按单词
// paragraphStyle.lineBreakMode=NSLineBreakByWordWrapping;
//
// [paragraphStyle setTailIndent:375.0];
NSDictionary *attrsDic=@{
NSForegroundColorAttributeName:foregroundColor,
NSBackgroundColorAttributeName:backgroundColor,
// NSBaselineOffsetAttributeName:baseLineOffset,
NSFontAttributeName:font,
NSKernAttributeName:kern,
NSLigatureAttributeName:ligature,
// NSLinkAttributeName:linkURL,
// NSUnderlineStyleAttributeName:underLine,
NSParagraphStyleAttributeName:paragraphStyle
}; //全文使用
[attributeString_atts addAttributes:attrsDic range:NSMakeRange(, [string length])]; //计算富文本的宽度
CGRect attrsRect=[attributeString_atts boundingRectWithSize:CGSizeMake(self.view.frame.size.width-, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading context:nil];
NSLog(@"%f",attrsRect.size.width);
NSLog(@"%f",attrsRect.size.height);
UILabel*label=[[UILabel alloc]initWithFrame:CGRectMake(, *number, self.view.frame.size.width-, attrsRect.size.height)];
label.attributedText=attributeString_atts;
label.userInteractionEnabled=YES;
label.numberOfLines=;
[self.view addSubview:label];
AttributedString的创建方式,下面研究下AttributedString究竟可以设置哪些属性,具体来说,有以下21个:
// NSFontAttributeName 设置字体属性,默认值:字体:Helvetica(Neue) 字号:12
// NSForegroundColorAttributeNam 设置字体颜色,取值为 UIColor对象,默认值为黑色
// NSBackgroundColorAttributeName 设置字体所在区域背景颜色,取值为 UIColor对象,默认值为nil, 透明色
// NSLigatureAttributeName 设置连体属性,取值为NSNumber 对象(整数),0 表示没有连体字符,1 表示使用默认的连体字符
// NSKernAttributeName 设定字符间距,取值为 NSNumber 对象(整数),正值间距加宽,负值间距变窄
// NSStrikethroughStyleAttributeName 设置删除线,取值为 NSNumber 对象(整数)
// NSStrikethroughColorAttributeName 设置删除线颜色,取值为 UIColor 对象,默认值为黑色
// NSUnderlineStyleAttributeName 设置下划线,取值为 NSNumber 对象(整数),枚举常量 NSUnderlineStyle中的值,与删除线类似
// NSUnderlineColorAttributeName 设置下划线颜色,取值为 UIColor 对象,默认值为黑色
// NSStrokeWidthAttributeName 设置笔画宽度,取值为 NSNumber 对象(整数),负值填充效果,正值中空效果
// NSStrokeColorAttributeName 填充部分颜色,不是字体颜色,取值为 UIColor 对象
// NSShadowAttributeName 设置阴影属性,取值为 NSShadow 对象
// NSTextEffectAttributeName 设置文本特殊效果,取值为 NSString 对象,目前只有图版印刷效果可用:
// NSBaselineOffsetAttributeName 设置基线偏移值,取值为 NSNumber (float),正值上偏,负值下偏
// NSObliquenessAttributeName 设置字形倾斜度,取值为 NSNumber (float),正值右倾,负值左倾
// NSExpansionAttributeName 设置文本横向拉伸属性,取值为 NSNumber (float),正值横向拉伸文本,负值横向压缩文本
// NSWritingDirectionAttributeName 设置文字书写方向,从左向右书写或者从右向左书写
// NSVerticalGlyphFormAttributeName 设置文字排版方向,取值为 NSNumber 对象(整数),0 表示横排文本,1 表示竖排文本
// NSLinkAttributeName 设置链接属性,点击后调用打开指定URL地址
// NSAttachmentAttributeName 设置文本附件,取值为NSTextAttachment对象,常用于文字图片混排
// NSParagraphStyleAttributeName 设置文本段落排版格式,取值为 NSParagraphStyle 对象
paragraph
alignment //对齐方式
firstLineHeadIndent //首行缩进
headIndent //缩进
tailIndent //尾部缩进
lineBreakMode //断行方式
maximumLineHeight //最大行高
minimumLineHeight //最低行高
lineSpacing //行距
paragraphSpacing //段距
paragraphSpacingBefore //段首空间
baseWritingDirection //句子方向
lineHeightMultiple //可变行高,乘因数。
hyphenationFactor //连字符属性
最新文章
- 学习笔记:delphi多线程知识
- MongoDB的查询操作
- Material Design风格的水波涟漪效果(Ripple Effect)的实现
- uploadify的用法与动态传参 提供demo下载
- Java将其他数据格式转换成json字符串格式
- H3C远程登陆配置
- codeforces Round 286# problem A. Mr. Kitayuta's Gift
- Codeforces Round #355 (Div. 2) D. Vanya and Treasure dp+分块
- 基于visual Studio2013解决C语言竞赛题之1082迷宫
- pygame编写贪吃蛇
- 关于vs2005 __RPC__out __RPC__in 没有定义编译错误
- zf-关于表单不能提交的bug修改
- PHP实反向代理-收藏
- Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSInvocation setArgument:atIndex:]: index (3) out of bounds [-1, 2]'
- NOIP2017划水记
- django1.8升级1.9的几个问题
- Hadoop和一般数据库的区别?
- angular升级指南
- Html引入百度富文本编辑器ueditor
- 并发编程之 SynchronousQueue 核心源码分析
热门文章
- 第十七篇 基于Bootstarp 仿京东多条件筛选插件的开发(展示下)
- mfc---CFileFind
- shell [ff: 未找到命令
- HTML 5入门知识——Drag
- lab1-Junit&;Eclemma
- 用Use Case获取需求的方法是否有什么缺陷,还有什么地方需要改进?
- 2429: [HAOI2006]聪明的猴子
- JQuery OOP 及 OOP思想的简易理解
- 使用mysql_Front链接mysql,出现警告access denied for user ''@'localhost'
- 修改mysql方法