- - (int)getAttributedStringHeightWithString:(NSAttributedString *) string WidthValue:(int) width
- {
- int total_height = 0;
- CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)string); //string 为要计算高度的NSAttributedString
- CGRect drawingRect = CGRectMake(0, 0, width, 1000); //这里的高要设置足够大
- CGMutablePathRef path = CGPathCreateMutable();
- CGPathAddRect(path, NULL, drawingRect);
- CTFrameRef textFrame = CTFramesetterCreateFrame(framesetter,CFRangeMake(0,0), path, NULL);
- CGPathRelease(path);
- CFRelease(framesetter);
- NSArray *linesArray = (NSArray *) CTFrameGetLines(textFrame);
- CGPoint origins[[linesArray count]];
- CTFrameGetLineOrigins(textFrame, CFRangeMake(0, 0), origins);
- int line_y = (int) origins[[linesArray count] -1].y; //最后一行line的原点y坐标
- CGFloat ascent;
- CGFloat descent;
- CGFloat leading;
- CTLineRef line = (CTLineRef) [linesArray objectAtIndex:[linesArray count]-1];
- CTLineGetTypographicBounds(line, &ascent, &descent, &leading);
- total_height = 1000 - line_y + (int) descent +1; //+1为了纠正descent转换成int小数点后舍去的值
- CFRelease(textFrame);
- return total_height;
- }
getAttributedStringHeightWithString
最新推荐文章于 2019-11-27 19:38:47 发布