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

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

cocos2dx 利用CCLabelTTF设置字的水平间距与垂直间距

在项目中对于文字的显示要求会有很多种,比如加描边、加阴影、个别文字加颜色、字的行间距与列间距等等一些。。最近在看cocos2d-x源码时发现引擎确实很强大里面有对文字的加描边与阴影的创建方法,但我在写...
  • hj3601947
  • hj3601947
  • 2015年09月14日 15:03
  • 2768

Label设置行间距

Label设置行间距内容摘要 UILabel显示多行文本 UILabel设置行间距 解决单行文本 & 多行文本显示的问题 场景描述 众所周知,UILabel显示多行的话,默认行间距为0,但实际开发中,...
  • u014696025
  • u014696025
  • 2016年04月17日 12:56
  • 12284

iOS 设置Label的行间距

iOS 设置Label的行间距
  • u013892686
  • u013892686
  • 2016年05月05日 16:37
  • 6014

使用XIB设置UILabel的换行及设置每一行的字体大小

1:先往XIB上拖一个Label.设置好约束2:设置属性:3:通过Option+return组合键来换行效果如下:4:重点来了,设置字体大小效果如下:5:设置行间距一样的通过箭头来调整字体大小,效果如...
  • lausen34
  • lausen34
  • 2017年06月12日 22:15
  • 1369

EditText 行间距 以及光标高度和样式

android:lineSpacingMultiplier="1.2" -- 设定行高为标准行高的1.2倍 android:lineSpacingExtra="20dp" -- 设定行高在标准行高的...
  • chinalwb
  • chinalwb
  • 2017年02月04日 15:12
  • 3294

Swift3.0 设置UILabel文件行间距 含oc版

UILabel实用设置行间距代码,直接上代码 swift: fileprivate func createUI(){ let subLabel = UILabel() ...
  • timtian008
  • timtian008
  • 2016年12月26日 15:32
  • 2468

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

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

控制iOS中文字的字间距与行间距

为了满足不同的视觉效果,我们文字之间的字间距行间距,经常在项目中需要更改,今天把这几句代码提取出来,和小伙伴们一起分享,以免下次你找不到呦~ 如果需要字间距需要提前写上 #import ,而只需要行...
  • siwen1990
  • siwen1990
  • 2016年04月20日 16:04
  • 4295

UILabel - 自定义行间距,字间距及段间距[并动态调节高度]

1.如若各项参数无需动态调节则可无视characterSpacing_及linesSpacing_. #import #import @interface MartinCustomLa...
  • Jensen2015
  • Jensen2015
  • 2015年01月15日 15:38
  • 1221

Qt QTreeWidget的行间距设置

QT,QTreeWidget,setItemWidget方法 [bq] ui.setupUi(this);  connect(ui.deleteItems, SIGNAL(clic...
  • yunjingguang
  • yunjingguang
  • 2014年04月22日 17:41
  • 4722
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:label_设置行距、字距及计算含有行间距的label高度
举报原因:
原因补充:

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