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) // 用于计算文本绘制时占据的矩形块
                                           options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading // 文本绘制时的附加选项
                                        attributes:dic        // 文字的属性
                                           context:nil].size; // context上下文。包括一些信息,例如如何调整字间距以及缩放。该对象包含的信息将用于文本绘制。该参数可为nil
    return textSize.height;
}

你可能感兴趣的:(iOS 字符串换行)