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

时间:2023-02-01 08:29:35


此文内容主要实现在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;

}