美文网首页
iOS 获取一段文本占UILabel多少行

iOS 获取一段文本占UILabel多少行

作者: liang1030 | 来源:发表于2021-03-24 15:03 被阅读0次

1,导入头文件

import <CoreText/CoreText.h>

2,

//根据文字内容、字体大小和宽度限制计算文本控件的行数
+ (NSInteger)rowsOfString:(NSString *)text withFont:(UIFont *)font withWidth:(CGFloat)width {
    if (!text || text.length == 0) {
        return 0;
    }
    CTFontRef myFont = CTFontCreateWithName(( CFStringRef)([font fontName]), [font pointSize], NULL);
    NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:text];
    [attStr addAttribute:(NSString *)kCTFontAttributeName value:(__bridge  id)myFont range:NSMakeRange(0, attStr.length)];
    CFRelease(myFont);
    CTFramesetterRef frameSetter = CTFramesetterCreateWithAttributedString(( CFAttributedStringRef)attStr);
    CGMutablePathRef path = CGPathCreateMutable();
    CGPathAddRect(path, NULL, CGRectMake(0,0,width,MAXFLOAT));
    CTFrameRef frame = CTFramesetterCreateFrame(frameSetter, CFRangeMake(0, 0), path, NULL);
    NSArray *lines = ( NSArray *)CTFrameGetLines(frame);
    CFRelease(frameSetter);
    CFRelease(frame);
    return lines.count;
}

相关文章

网友评论

      本文标题:iOS 获取一段文本占UILabel多少行

      本文链接:https://www.haomeiwen.com/subject/cukhhltx.html