【iOS 开发】Xcode6中计算文字的宽度或高度 ——伊禾媛

来源:互联网 发布:随身淘宝去异界书包网 编辑:程序博客网 时间:2024/05/21 01:53


此文内容主要实现在Xcode6中计算文字宽高,让label或tableViewCell自适应宽高。

我将它封装起来,方便多处使用。

需传入的三个参数:计算的字符串、字体大小、显示的宽(高)


//计算高度+ (CGFloat)getTheStringHeight:(NSString *)string setFont:(CGFloat)font withWidth:(CGFloat)width {        NSMutableAttributedString  *attrStr = [[NSMutableAttributedString alloc] initWithString:string];    NSRange range = NSMakeRange(0, attrStr.length);    //设置字体    [attrStr addAttribute:NSFontAttributeName                    value:[UIFont systemFontOfSize:font]                    range:range];        NSDictionary *dic = [attrStr attributesAtIndex:0 effectiveRange:&range];   // 获取该段attributedString        CGSize textSize = [string boundingRectWithSize:CGSizeMake(<span style="font-family: Arial, Helvetica, sans-serif;">width</span><span style="font-family: Arial, Helvetica, sans-serif;">, MAXFLOAT) // 用于计算文本绘制时占据的矩形块</span>                                           options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading // 文本绘制时的附加选项                                        attributes:dic        // 文字的属性                                           context:nil].size; // context上下文。包括一些信息,例如如何调整字间距以及缩放。该对象包含的信息将用于文本绘制。该参数可为nil        return textSize.height;}//计算宽度+ (CGFloat)getTheStringWidth:(NSString *)string setFont:(CGFloat)font withHeight:(CGFloat)height {    NSMutableAttributedString  *attrStr = [[NSMutableAttributedString alloc] initWithString:string];    NSRange range = NSMakeRange(0, attrStr.length);    //设置字体    [attrStr addAttribute:NSFontAttributeName                    value:[UIFont systemFontOfSize:font]                    range:range];        NSDictionary *dic = [attrStr attributesAtIndex:0 effectiveRange:&range];   // 获取该段attributedString        CGSize textSize = [string boundingRectWithSize:CGSizeMake(MAXFLOAT, height) // 用于计算文本绘制时占据的矩形块                                           options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading // 文本绘制时的附加选项                                        attributes:dic        // 文字的属性                                           context:nil].size; // context上下文。包括一些信息,例如如何调整字间距以及缩放。该对象包含的信息将用于文本绘制。该参数可为nil        return textSize.width;}


0 0