美文网首页
iOS 字符串换行

iOS 字符串换行

作者: yycache | 来源:发表于2020-04-20 13:40 被阅读0次

    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;
    }

    相关文章

      网友评论

          本文标题:iOS 字符串换行

          本文链接:https://www.haomeiwen.com/subject/abnrihtx.html