码迷,mamicode.com
首页 > 其他好文 > 详细

获取指定<文字行数>的<高度>是多少 TextKit

时间:2018-06-29 21:05:16      阅读:378      评论:0      收藏:0      [点我收藏+]

标签:文字   layout   TE   manage   aci   add   col   sys   org   

 

- (CGSize)maxLineSizeWithLines:(NSInteger)lines constraintSize:(CGSize)size attributes:(NSDictionary*)dicAttr
{
  //负责布局渲染 NSLayoutManager
* manager = [[NSLayoutManager alloc] init];
  //指定渲染的区域 NSTextContainer
* con = [[NSTextContainer alloc] initWithSize:size]; con.lineFragmentPadding = 0; //行间距 con.maximumNumberOfLines = lines;//最多显示的行数 [manager addTextContainer:con];
  //负责存储文字内容 NSTextStorage
* storage = [[NSTextStorage alloc] initWithString:_str]; [storage addLayoutManager:manager]; [storage addAttributes:dicAttr range:NSMakeRange(0, _str.length)]; CGRect rt = [manager boundingRectForGlyphRange:NSMakeRange(0, _str.length) inTextContainer:con]; return rt.size; }

//下面是测试代码

 

 UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 200, kWidth, 100)];
    label.backgroundColor = [UIColor greenColor];
    label.numberOfLines = 0;
    label.font = [UIFont systemFontOfSize:15];
    [self.view addSubview:label];
    
     _str = @"啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊";
    
    label.text = _str;
    
    NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc]init];
    style.lineSpacing = 0;
    
    NSDictionary *dic = @{NSFontAttributeName:[UIFont systemFontOfSize:15],NSParagraphStyleAttributeName:style};
    
    CGSize size = [self maxLineSizeWithLines:2 constraintSize:CGSizeMake(kWidth, 200) attributes:dic];
    
    NSLog(@"%@",NSStringFromCGSize(size));
    
    label.height = size.height;  //返回的size 就是两行文字所占的高度

 

获取指定<文字行数>的<高度>是多少 TextKit

标签:文字   layout   TE   manage   aci   add   col   sys   org   

原文地址:https://www.cnblogs.com/daxueshan/p/9245343.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!