修改UILabel的行间距

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

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

5:label行间距;

contentLabel:需要设置行间距的label

contentTextFont:字体大小;

contentLabelW:label的宽度

 

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWithString:contentLabel.text];;
            NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
            [paragraphStyle setLineSpacing:5];
            [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, contentLabel.text.length)];
            
            contentLabel.attributedText = attributedString;
            

//调节高度(在计算label的高度的时候需要注意 因为行间距变化了 不再是系统默认的行间距了 所以在计算的时候要根据实际的行间距去调整)
    CGSize contentTextSize = [self sizeOfText:contentLabel.text WithFont:contentTextFont maxSize:CGSizeMake(contentLabelW, CGFLOAT_MAX)];
    CGSize size = [contentlabel.text sizeWithFont:contentTextFont];
    int length = size.height;
    int colomNumber = contentTextSize.height/length;
//contentLabelH 就是label的实际高度 CGFloat contentLabelH
= contentTextSize.height+colomNumber*5;
            //CGSize size = CGSizeMake(width, 500000);
            
            //CGSize labelSize = [contentLabel sizeThatFits:size];

高度计算思路:

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

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

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

 

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

posted @ 2016-03-22 19:29  高晓牛  阅读(1581)  评论(0编辑  收藏  举报