计算文字高度和宽度

来源:互联网 发布:大数据相关的技术 编辑:程序博客网 时间:2024/05/21 06:20

//计算lab高度

- (CGFloat)getSizeForLabString:(NSString *)labStr font:(NSInteger)fontInt width:(CGFloat)width

{

    NSMutableAttributedString *attrStr = [[NSMutableAttributedStringalloc] initWithString:labStr];

    

    NSRange allRange = [labStrrangeOfString:labStr];

    [attrStr addAttribute:NSFontAttributeName

                    value:[UIFontsystemFontOfSize:KHEIGHTShiPei fontInt]

                    range:allRange];

    

    CGFloat titleHeight;

    NSStringDrawingOptions options = NSStringDrawingUsesLineFragmentOrigin |NSStringDrawingUsesFontLeading;

    CGRect rect = [attrStrboundingRectWithSize:CGSizeMake(width,CGFLOAT_MAX)

                                        options:options

                                        context:nil];

    titleHeight = ceilf(rect.size.height);

    return titleHeight+2// 加两个像素,防止emoji被切掉.

}


//计算lab宽度

- (CGFloat)getSizeForLabString:(NSString *)labStr font:(NSInteger)fontInt hight:(CGFloat)hight

{

    if (labStr ==nil) {

        return0;

    }

    NSMutableAttributedString *attrStr = [[NSMutableAttributedStringalloc] initWithString:labStr];

    

    NSRange allRange = [labStrrangeOfString:labStr];

    [attrStr addAttribute:NSFontAttributeName

                    value:[UIFontsystemFontOfSize:KHEIGHTShiPei fontInt]

                    range:allRange];

    

    CGFloat titleWidth;

    NSStringDrawingOptions options = NSStringDrawingUsesLineFragmentOrigin |NSStringDrawingUsesFontLeading;

    CGRect rect = [attrStrboundingRectWithSize:CGSizeMake(CGFLOAT_MAX, hight)

                                        options:options

                                        context:nil];

    titleWidth = ceilf(rect.size.width);

    return titleWidth+2;

}

原创粉丝点击