iOS 字符串换行
1、
sizeToFit:会计算出最优的 size 而且会改变自己的size
sizeThatFits:会计算出最优的 size 但是不会改变 自己的 size
CGSize sizeThatFits = [self.messageLabel sizeThatFits:CGSizeZero];
2、
/// 动态获取字符串宽度
/// @param string 字符串内容
/// @param font 字体大小
/// @param 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:CUSTOM_FONT(font)
range:range];
// 获取该段attributedString
NSDictionary *dic = [attrStr attributesAtIndex:0 effectiveRange:&range];
// 用于计算文本绘制时占据的矩形块
CGSize textSize = [string boundingRectWithSize:CGSizeMake(MAXFLOAT, height)
options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading // 文本绘制时的附加选项
attributes:dic // 文字的属性
context:nil].size; // context上下文。包括一些信息,例如如何调整字间距以及缩放。该对象包含的信息将用于文本绘制。该参数可为nil
return textSize.width;
}
3、
/// 计算高度
/// @param string 内容
/// @param font 字体大小
/// @param width 固定宽度
+ (CGFloat)getTheStringHeight:(NSString *)string setFont:(CGFloat)font withWidth:(CGFloat)width
{
if (string == nil || [string isEqualToString:@""])
{
return 0;
}
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:string];
//段落
NSMutableParagraphStyle *paragraphStyle = [NSMutableParagraphStyle new];
// [paragraphStyle setLineSpacing:pageWidth];
// paraStyle.lineBreakMode = NSLineBreakByCharWrapping;
NSRange range = NSMakeRange(0, attrStr.length);
[attrStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:range];
//设置字体
[attrStr addAttribute:NSFontAttributeName
value:[UIFont systemFontOfSize:font]
range:range];
NSDictionary *dic = [attrStr attributesAtIndex:0 effectiveRange:&range]; // 获取该段
CGSize textSize = [string boundingRectWithSize:CGSizeMake(width, MAXFLOAT) // 用于计算文本绘制时占据的矩形块</span>
options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading // 文本绘制时的附加选项
attributes:dic // 文字的属性
context:nil].size; // context上下文。包括一些信息,例如如何调整字间距以及缩放。该对象包含的信息将用于文本绘制。该参数可为nil
return textSize.height;
}