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