在iOS开发中  有时候为了调整一些UI效果  我们需要调整UILabel之间的行间距:

contentLabel.text:label上显示的文字内容;

5:label行间距;

contentLabel:需要设置行间距的label

contentTextFont:字体大小;

contentLabelW:label的宽度

  1. NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:contentLabel.text];;
  2. NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
  3. [paragraphStyle setLineSpacing:];
  4. [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(, contentLabel.text.length)];
  5.  
  6. contentLabel.attributedText = attributedString;
  7.  
  8. //调节高度(在计算label的高度的时候需要注意 因为行间距变化了 不再是系统默认的行间距了 所以在计算的时候要根据实际的行间距去调整)
  1. CGSize contentTextSize = [self sizeOfText:contentLabel.text WithFont:contentTextFont maxSize:CGSizeMake(contentLabelW, CGFLOAT_MAX)];
  2. CGSize size = [contentlabel.text sizeWithFont:contentTextFont];
  3. int length = size.height;
  4. int colomNumber = contentTextSize.height/length;
    //contentLabelH 就是label的实际高度
  5. CGFloat contentLabelH = contentTextSize.height+colomNumber*;
  1. //CGSize size = CGSizeMake(width, );
  2.  
  3. //CGSize labelSize = [contentLabel sizeThatFits:size];

高度计算思路:

首先要计算label的高度(这个高度是按照系统方法计算的  所以间距也是系统默认的间距  很小的)  然后计算label中每行文字对应的高度  然后label高度除以文字的高度就是label行数

当我们知道label的行数是 也知道了行间距

那么label的实际高度就是label的高度(这个高度是按照系统方法计算的  所以间距也是系统默认的间距  很小的)加上(行数*间距)

PS:这个计算方法不是很好  忽略了系统默认的间距 虽然默认的间距很小 但是忽略的话也会给实际尺寸的计算带来较大误差  另外计算也比较麻烦  我觉得应该还有更简单更方便的方法  只是一时没想到  如果有知道更好方法的小伙伴 请联系我!

修改UILabel的行间距的更多相关文章

  1. (转载)iOS UILabel自定义行间距时获取高度

    本文介绍一下自定义行间距的UILabel的高度如何获取,需要借助一下开源的UILabel控件:TTTAttributedLabel 附下载地址 https://github.com/TTTAttrib ...

  2. iOS UILabel自定义行间距时获取高度

    本文介绍一下自定义行间距的UILabel的高度如何获取,需要借助一下开源的UILabel控件:TTTAttributedLabel 附下载地址 https://github.com/TTTAttrib ...

  3. UILabel设置行间距和字间距并计算高度-b

    #define UILABEL_LINE_SPACE 6 #define HEIGHT [ [ UIScreen mainScreen ] bounds ].size.height //给UILabe ...

  4. (转)iOS学习——UIlabel设置行间距和字间距

    在iOS开发中经常会用到UIlabel来展示一些文字性的内容,但是默认的文字排版会觉得有些挤,为了更美观也更易于阅读我们可以通过某些方法将UIlabel的行间距和字间距按照需要调节. 比如一个Labe ...

  5. iOS运用runtime全局修改UILabel的默认字体

    iOS运用runtime全局修改UILabel的默认字体 一.需求背景介绍 在项目比较成熟的基础上,遇到了这样一个需求,应用中需要引入新的字体,需要更换所有Label的默认字体,但是同时,对于一些特殊 ...

  6. UILabel设置行间距

    UILabel设置行间距: NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWi ...

  7. iOS 设置UILabel的行间距并自适应高度

    NSString *contentStr = @"总以为,在最初的地方,有一个最原来的我,就也会有一个最原来的你"; UILabel *tempLabel = [[UILabel ...

  8. IOS开发调整UILabel的行间距

    CGFloat heih = 20;   NSString * cLabelString = @"这是测试UILabel行间距的text.这是测试UILabel行间距的text.n 这是测试 ...

  9. UILabel 调整行间距

    /* 调整行间距 */ + (void)adjustLineSpacingOfLabel:(UILabel *)label to:(CGFloat)lineSpacing { NSString *te ...

随机推荐

  1. 可用于Hadoop下的ETL工具——Kettle

    看大家分享了好多hadoop相关的一些内容,我为大家介绍一款ETL工具——Kettle.    Kettle是pentaho公司开源的一款ETL工具,跟hadoop一样,也是java实现,其目的就是做 ...

  2. HDU4614 Vases and Flowers 二分+线段树

    分析:感觉一看就是二分+线段树,没啥好想的,唯一注意,当开始摆花时,注意和最多能放的比大小 #include<iostream> #include<cmath> #includ ...

  3. ASP.NET Web API 如何通过程序控制返回xml还是json

    雖然 ASP.NET Web API 內建支援 JSON 與 XML 兩種輸出格式,並依據瀏覽器端送出的 Accept 標頭自動決定回應的內容格式,不過有時候我們的確也需要讓程式來控制要回應哪種格式, ...

  4. Win10系统安装

    2016正月十一来到了学校,刚刚拿到了姐姐的thinkpad,到学校来想重新安装一下系统并且重新磁盘分区. 上一次也安装过win10,不过基本方法已经忘了,制作的U启动盘也不在了. 首先按照http: ...

  5. 50道经典的JAVA编程题(41-45)

    50道经典的JAVA编程题(41-45),苦逼的程序猿,晚上睡不着了编程吧~今天坚持做10道题!发现编程能是我快乐...O(∩_∩)O哈哈~能平静我烦乱的心,剩下5道题留到考试完了再做吧!该睡觉了.. ...

  6. leetcode@ [97] Interleaving Strings

    https://leetcode.com/problems/interleaving-string/ Given s1, s2, s3, find whether s3 is formed by th ...

  7. FZU 2176 easy problem (DFS序+树状数组)

    对于一颗树,dfs遍历为每个节点标号,在进入一个树是标号和在遍历完这个树的子树后标号,那么子树所有的标号都在这两个数之间,是一个连续的区间.(好神奇~~~) 这样每次操作一个结点的子树时,在每个点的开 ...

  8. Android的Spinner

    使用Spinner遇到不少坑啊 3.自定义spinner样式 <style name="AppTheme" parent="Theme.AppCompat.Ligh ...

  9. Java中finalize方法用途何在?

    package thinking.in.java.demo; /* * finalize的用途何在? * *本例的终止条件是L所有的Book对象在被当做垃圾回收前都应该被签入.但是在main方法中 * ...

  10. Java网络编程(UDP协议-聊天程序)

    接收端: package WebProgramingDemo; import java.net.DatagramPacket; import java.net.DatagramSocket; publ ...