label_设置行距、字距及计算含有行间距的label高度

原创 2016年08月29日 14:03:29


基本计算label高度

ios7:

CGSize size2 = [lable1.text sizeWithFont:[UIFont systemFontOfSize:17] constrainedToSize:CGSizeMake(168, 20000.0f)];

NSLog(@"label高度:%f",size2.height);


ios8:

NSDictionary *attributes =@{NSFontAttributeName:[UIFontsystemFontOfSize:17]};

    CGSize textSize = [lable1.textboundingRectWithSize:CGSizeMake(168,2000)options:NSStringDrawingUsesLineFragmentOriginattributes:attributes context:nil].size;

NSLog(@"label高度:%f",textSize.height);





label_设置行距、字距及计算含有行间距的label高度

//

//  ViewController.m

//  CNBlogs

//

//  Created by PXJ on 16/5/27.

//  Copyright © 2016 PXJ. All rights reserved.

//

 

#import "ViewController.h"

 

@interface ViewController ()

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    

    NSString * conText = @"\n你的嘴角 微微上翘 性感的无可救药\n想像不到 如此心跳 你的一切都想要\n软性的饮料 上升的气泡 我将对你的喜好 一瓶装全喝掉\n这里最不缺就是热闹 你煽情给拥抱\n烛火在燃烧 有某种情调眼神失焦了几秒\n关于你的舞蹈 你慵懒的扭动著腰 受不了\n你随风飘扬的笑 \n有迷迭香的味道 语带薄荷味的撒娇 对我发出恋爱的讯号\n你优雅的像一只猫 动作轻逸的围绕 爱的甜味蔓延发酵 暧昧来的刚好\n\n软性的饮料 上升的气泡 我将对你的喜好 一瓶装全喝掉\n这里最不缺就是热闹 你煽情给拥抱\n烛火在燃烧 有某种情调 眼神失焦了几秒\n关于你的舞蹈 你慵懒的扭动著腰 受不了\n你随风飘扬的笑 有迷迭香的味道 语带薄荷味的撒娇 对我发出恋爱的讯号\n你优雅的像一只猫 动作轻逸的围绕 爱的甜味蔓延发酵 暧昧来的刚好\n";

    UIFont * font = [UIFont systemFontOfSize:12]; //字号

    CGFloat lineSpace = 8;//行间距

    CGFloat paragraphSpacing = 0;//段间距

    CGSize labSize = CGSizeMake(4001000);//label宽高

    NSNumber * textLengthSpace  = @0.2;//字间距

    

    

    NSDictionary * dic  = [self setTextLineSpaceWithString:conText withFont:font withLineSpace:lineSpace  withTextlengthSpace:textLengthSpace paragraphSpacing:paragraphSpacing];

    

    CGSize size = [conText boundingRectWithSize:labSize options:NSStringDrawingUsesLineFragmentOriginattributes:dic context:nil].size;

    CGFloat sizeHeight = size.height;//lab的高度

 

    

//   CGFloat sizeHeight =  [self getSpaceLabelHeight:conText withFont:font withLineSpace:lineSpace size:labSize textlengthSpace:textLengthSpace paragraphSpacing:paragraphSpacing];

//    

    UILabel  * lab = [[UILabel allocinit];

    lab.numberOfLines = 0;

    lab.backgroundColor = [UIColor yellowColor];

    lab.frame =  CGRectMake(20,20400, sizeHeight);

    lab.attributedText = [[NSAttributedString allocinitWithString:conText attributes:dic];

    [self.view addSubview:lab];

}

 

/*

 *UILabel设置行间距和字间距

 */

-(NSDictionary *)setTextLineSpaceWithString:(NSString*)str withFont:(UIFont*)font withLineSpace:(CGFloat)lineSpace withTextlengthSpace:(NSNumber *)textlengthSpace paragraphSpacing:(CGFloat)paragraphSpacing{

    

    NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle allocinit];

    paraStyle.lineBreakMode = NSLineBreakByCharWrapping;

    paraStyle.alignment = NSTextAlignmentLeft;

    paraStyle.lineSpacing = lineSpace; //设置行间距

    paraStyle.hyphenationFactor = 1.0;

    paraStyle.firstLineHeadIndent = 0.0;

    paraStyle.paragraphSpacingBefore = 0.0;

    paraStyle.headIndent = 0;

    paraStyle.tailIndent = 0;

    NSDictionary *dic = @{NSFontAttributeName:font,

                          NSParagraphStyleAttributeName:paraStyle,

                          NSKernAttributeName:textlengthSpace

                          };

    return dic;

}

 

/*

 *计算UILabel的高度(带有行间距的情况)

 */

 

 

//-(CGFloat)getSpaceLabelHeight:(NSString*)str withFont:(UIFont*)font withLineSpace:(CGFloat)lineSpace size:(CGSize)textSize textlengthSpace:(NSNumber *)textlengthSpace paragraphSpacing:(CGFloat)paragraphSpacing

//{

//    

//    

//    NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];

//    paraStyle.lineBreakMode = NSLineBreakByCharWrapping;

//    paraStyle.alignment = NSTextAlignmentLeft;

//    paraStyle.lineSpacing = lineSpace;

//    paraStyle.paragraphSpacing = paragraphSpacing;

//    paraStyle.hyphenationFactor = 1.0;

//    paraStyle.firstLineHeadIndent = 0.0;

//    paraStyle.paragraphSpacingBefore = 0.0;

//    paraStyle.headIndent = 0;

//    paraStyle.tailIndent = 0;

//    NSDictionary *dic = @{NSFontAttributeName:font,

//                          NSParagraphStyleAttributeName:paraStyle,

//                          NSKernAttributeName:textlengthSpace

//                          };

//    CGSize size = [str boundingRectWithSize:textSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;

//    return size.height;

//}

//

@end

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

iOS Label行间距设置

在这里label行间距,实现原理是通过字符串长度和label宽度来计算可以显示在多少行,然后设置行与行间的间距。...

【代码笔记】iOS-设置textView或者label的行间距方法

一,效果图。 二,代码。 RootViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any...

【iOS】 Label设置行距自适应高度

关于label自适应高度想必只要有一点开发基础的朋友都应该了解,这边我就不多提了,贴上一段自己写的计算的代码。 + (CGFloat)textHeightFromTextString:(NSStri...

iOS之label行间距的缩进

开发过程中 遇到显示label的N多行,可是有时候label的整体显示符合不了我们的美的标准 现在让我们看看label本事显示多行的效果。 NSMutableParagraphStyle ...

div css文字字体行高行距 深入理解css行间距设置

div css文字字体行高行距 DIVCSS5带您深入理解css行间距设置,字体行距如何最简单地设置。 在文章中,要实现调节设置每行文字字体间距(行距)是使用line-height属性。 要使得每...

iOS文字样式处理总结(字体、前背景色、斜体、加粗、对齐、行间距、段间距、动态获取字符串label宽高等)

IOS 文字样式处理总结(字体、前背景色、斜体、加粗、对齐、行间距、段间距、动态获取字符串label宽高等) 在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线...

C# winform自定义Label控件使其能设置行距

1)在windows窗体应用程序中添加组件类代码如下 using System; using System.Collections.Generic; using System.Linq; using ...

使用富文本在lable上展示不同颜色的文字,自定义label高度,自定义行间距

废话不多说,直接上代码 第一段代码主要是创建富文本,并给文字赋值给label,调整文字的颜色字体行间距等 - (void)createLabel { UILabel * textLabel...

可设置行距的Label

WinForm开发中自定义Label
  • sloder
  • sloder
  • 2011年01月16日 21:11
  • 6678
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:label_设置行距、字距及计算含有行间距的label高度
举报原因:
原因补充:

(最多只允许输入30个字)