獲取指定<文字行數>的<高度>是多少 TextKit
阿新 • • 發佈:2018-06-29
內容 ddt sla ict con tex ret nco nsf
- (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