Label设置行间距,段间距,字间距

  • 使用NSMutableAttributedString设置label属性

直接上代码

- (void)viewDidLoad {[super viewDidLoad];NSString *text = @"突然想要写点什么,来纪念自己即将逝去的大学四年时光,借机过度一下自己此时此刻莫可名状的心情;\n突然想要说点什么,来缅怀一下自己当初万丈豪情遗失的时光和所谓的青春年华。\n不知道是骨子里的性情使然,\n还是内心深处想要特意地煽情?";UIFont *font = [UIFont systemFontOfSize:14.f];// 字号CGFloat lineSpace = 5.f; // 行间距CGFloat paragraphSpacing = 10.f; // 段间距CGSize labelSize = CGSizeMake([UIScreen mainScreen].bounds.size.width - 20, 0);NSNumber *textLengthSpace = @1.5; // 字间距NSDictionary *dict = [self setTextLineSpaceWithString:text withLineBreakMode:(NSLineBreakByCharWrapping) withAlignment:NSTextAlignmentLeft withFont:font withLineSpace:lineSpace withTextlengthSpace:textLengthSpace andParagraphSpaceing:paragraphSpacing];CGFloat height = [self getSpaceLabelHeight:text textSize:labelSize withLineBreakMode:(NSLineBreakByCharWrapping) withAlignment:(NSTextAlignmentLeft) withFont:font withLineSpace:lineSpace withTextlengthSpace:textLengthSpace andParagraphSpaceing:paragraphSpacing];UILabel *label = [[UILabel alloc] init];label.numberOfLines = 0;label.frame = CGRectMake(10, 50, labelSize.width, height);label.attributedText = [[NSMutableAttributedString alloc] initWithString:text attributes:dict];[self.view addSubview:label];
}
/**设置label字体, 行间距, 字间距, 段间距 @param string label上文字
 @param lineBreakMode 每行容纳字符的宽度
 @param alignment 对齐方式
 @param font 字体大小
 @param lineSpace 行间距
 @param textlengthSpace 字间距
 @param paragraphSpacing 段间距
 @return 存放属性的字典*/
- (NSDictionary *)setTextLineSpaceWithString:(NSString *)string withLineBreakMode:(NSLineBreakMode)lineBreakMode withAlignment:(NSTextAlignment)alignment withFont:(UIFont *)font withLineSpace:(CGFloat)lineSpace withTextlengthSpace:(NSNumber *)textlengthSpace andParagraphSpaceing:(CGFloat)paragraphSpacing {// 1. 创建样式对象NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];// 2. 每行容纳字符的宽度style.lineBreakMode = lineBreakMode;// 3. 对齐方式style.alignment = alignment;// 4. 设置行间距style.lineSpacing = lineSpace;// 5. 连字符号链接style.hyphenationFactor = 1.0f;// 6. 首行缩进style.firstLineHeadIndent = 30.0f;// 7. 段间距style.paragraphSpacing = paragraphSpacing;// 8. 段前间距style.paragraphSpacingBefore = 0.0f;// 9. 除首行之外其他行缩进style.headIndent = 0.0f;// 10. 每行容纳字符的宽度style.tailIndent = 0.0f;NSDictionary *dict = @{NSFontAttributeName : font,NSParagraphStyleAttributeName : style,NSKernAttributeName : textlengthSpace,};return dict;
}
/* 计算label高度 */
- (CGFloat)getSpaceLabelHeight:(NSString *)string textSize:(CGSize)textSize withLineBreakMode:(NSLineBreakMode)lineBreakMode withAlignment:(NSTextAlignment)alignment withFont:(UIFont *)font withLineSpace:(CGFloat)lineSpace withTextlengthSpace:(NSNumber *)textlengthSpace andParagraphSpaceing:(CGFloat)paragraphSpacing {NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];style.lineBreakMode = lineBreakMode;style.alignment = alignment;style.lineSpacing = lineSpace;style.paragraphSpacing = paragraphSpacing;style.hyphenationFactor = 1.0;style.firstLineHeadIndent = 30.0;style.paragraphSpacingBefore = 0.0;style.headIndent = 0;style.tailIndent = 0;NSDictionary *dic = @{NSFontAttributeName:font,NSParagraphStyleAttributeName:style,NSKernAttributeName:textlengthSpace};CGSize size = [string boundingRectWithSize:textSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;return size.height;
}

效果如图:


Label设置行间距,段间距,字间距相关推荐

  1. Label设置行间距

    Label设置行间距 内容摘要 UILabel显示多行文本 UILabel设置行间距 解决单行文本 & 多行文本显示的问题 场景描述 众所周知,UILabel显示多行的话,默认行间距为0,但实 ...

  2. docx行间距怎么设置_Word如何调整字间距,行间距.docx

    PAGE PAGE #/ 2 Word 如何调整字间距.行间距 字间距决定行内文字之间的距离.行距决定段落中各行文字之间的垂直距 离.段落间距决定段落上方或下方的间距量. 一.调整汉字与英文字母.数字 ...

  3. 【LaTeX入门】04 设置行间距 段间距

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 设置行间 ...

  4. CSS行间距line-height和字间距、字体间距、字符间距详解

    行间距line-height 行高line-height的值可以为百分比数字 | 由浮点数字和单位标识符组成的长度值,允许为负值.其百分比取值是基于字体的高度尺寸. 在文章中,要实现调节设置每行文字字 ...

  5. Java富文本设置行间距,如何解决富文本设置行间距的单行带间距问题

    最近因为要调UILabel的行间距时,碰到了个问题,就是当文本时中文时,且只有一行时还是有行间距,由于对 TextKit 和 CoreText 的研究比较少,找了些资料,自己写了比较笨,但也比较简单的 ...

  6. ios label文字行间距_iOS设置UILabel文字的行间距和字间距

    释放双眼,带上耳机,听听看~! 可以在UILabel的Category中提供如下几个方法: .h文件 @interface UILabel (ChangeLineSpaceAndWordSpace) ...

  7. iOS设置富文本行间距、字间距

    Demo下载地址 我们在展示文字信息时,经常会碰到换行自适应高度的文本,这时我们会发现换行之后,文本之间的行间距依然很小,导致看起来很拥挤,影响美观.因此以下代码就是来解决这些问题,新建一个NSStr ...

  8. word如何调整字间距离_Word如何快速调整行间距和字间距?

    WORD中调整行间距和字间距是文档编辑中经常性的操作,但如何快速调整,我还真想了一段时间,下面我介绍的方法不知能不能叫快速? 为了完整性先一般是如何调整行间距和字间距的. 行间距 选中要调整的文字段落 ...

  9. android+设置字体行高,android textview设置字体的行距和字间距

    android textview设置字体的行距和字间距 字间距 textView有一个属性android:textScaleX是调节字间距的,它的值是一个float型.查看源代码,默认textView ...

最新文章

  1. 价格的格式化 php,价格格式化问题。
  2. SAP中的Currency Converting Factor
  3. C++中return语句的用法
  4. SD卡读写,首选项,共享首选项
  5. svg图片在vue脚手架vue-cli怎么使用
  6. JavaScript读取本地图片到浏览器
  7. 背包问题 codevs2210 数字组合
  8. Nginx配置文件示例
  9. python要学多久可以找到工作-自学Python的高效方法,学Python多久能找到工作?
  10. 如何获取网络标准时间
  11. 把手机上B站App缓存的视频转换为正常的mp4格式视频
  12. sklearn实现决策树
  13. ae合成设置快捷键_ae技巧,使用ae实用小技巧
  14. 社区购物、社区买菜小程序源码
  15. 32 《奇特的一生》 -豆瓣评分8.5
  16. PyMC3 概率编程入门
  17. 计算机系统声音出不来怎么办,win7系统电脑没有声音怎么办? 是什么原因如何解决...
  18. 小白都想知道的思维导图软件哪个好,答案在这里
  19. 气象站的技术参数有哪些?
  20. Hadoop 数据仓库工具——Hive

热门文章

  1. 展会ING丨计讯物联在中国水博览会大放异彩,现场人气持续狂飙
  2. MySQL自动备份到本地数据库,服务器上的Mysql数据自动备份到本地
  3. break怎么跳出多层循环C语言,C/C++ 跳出多重循环方法
  4. linux ext4文件系统为什么目录大小是4k?
  5. 实战商城app之uView框架前端极速开发课程简介
  6. ICP , ISP and IAP
  7. R 加权最小二乘 代码_Python-最小二乘法曲线拟合
  8. 苹果手机变成耳机模式怎么调回来_苹果耳机推出“新功能”:打僵尸!
  9. 转:2005岁末BLOG程序大评点
  10. MATLAB 面向对象编程 APP Designer基础