美文网首页
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字符串处理_替换(去掉空格换行)、截取 以下代码主要实现了:1、截取"@@"前的字符串; 2、去掉字符串中的...

  • iOS 字符串换行

    今天碰到一个需求就是 后台返回一串字符串是 @“1,你好你好你好年后;2你好你好年后你好你好;3你好哈你好呢你好呢...

  • iOS 字符串换行

    1、 sizeToFit:会计算出最优的 size 而且会改变自己的size sizeThatFits:会计算出最...

  • ES6 - 模板字符串

    字符串拼接 字符串换行

  • 4.echo命令

    输出字符串 默认 带有换行:echo "字符串 哈哈" 输出字符串 不换行 -e表示开启转义功能: 字符串内部...

  • Code Snipe - 自动换行分隔字符串代码

    自动换行分隔字符串代码

  • 练习日常

    匹配换行符/n split(',') 字符串分割成数组 超出隐藏 不换行 和禁用状态 字符串截取 缓存组件 key...

  • iOS 字符串截取、iOS 字符串替换、iOS 字符串分隔、iO

    iOS之字符串截取、iOS 字符串替换、iOS字符串分隔、iOS之字符串匹配、截取字符串、匹配字符串、分隔字符串 ...

  • 2022-08-23

    Android适配IOS的换行符 当你遇到使用ios发布动态或者其他带换行符的文案在安卓上却没有换行的问题,使用下...

  • Swift - Strings and Characters

    多行字符串 使用""换行,增加代码可读性,并不会加入到 String Value 中,即实际字符串并不会换行。 与...

网友评论

      本文标题:iOS 字符串换行

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