美文网首页
计算NSAttributedString字符串size

计算NSAttributedString字符串size

作者: 一达 | 来源:发表于2019-09-24 14:50 被阅读0次
    /**
     *  return 动态返回字符串size大小
     *
     *  @param aString 字符串
     *  @param width   指定宽度
     *  @param height  指定宽度
     *
     *  @return CGSize
     */
    - (CGSize)getStringRect:(NSAttributedString *)aString width:(CGFloat)width height:(CGFloat)height
    {
        CGSize size = CGSizeZero;
        NSMutableAttributedString *atrString = [[NSMutableAttributedString alloc] initWithAttributedString:aString];
        NSRange range = NSMakeRange(0, atrString.length);
        
        //获取指定位置上的属性信息,并返回与指定位置属性相同并且连续的字符串的范围信息。
        NSDictionary* dic = [atrString attributesAtIndex:0 effectiveRange:&range];
        //不存在段落属性,则存入默认值
        NSMutableParagraphStyle *paragraphStyle = dic[NSParagraphStyleAttributeName];
        if (!paragraphStyle || nil == paragraphStyle) {
            paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
            paragraphStyle.lineSpacing = 0.0;//增加行高
            paragraphStyle.headIndent = 0;//头部缩进,相当于左padding
            paragraphStyle.tailIndent = 0;//相当于右padding
            paragraphStyle.lineHeightMultiple = 0;//行间距是多少倍
            paragraphStyle.alignment = NSTextAlignmentLeft;//对齐方式
            paragraphStyle.firstLineHeadIndent = 0;//首行头缩进
            paragraphStyle.paragraphSpacing = 0;//段落后面的间距
            paragraphStyle.paragraphSpacingBefore = 0;//段落之前的间距
            [atrString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:range];
        }
        
        //设置默认字体属性
        UIFont *font = dic[NSFontAttributeName];
        if (!font || nil == font) {
            font = [UIFont fontWithName:@"HelveticaNeue" size:12.0];
            [atrString addAttribute:NSFontAttributeName value:font range:range];
        }
        
        NSMutableDictionary *attDic = [NSMutableDictionary dictionaryWithDictionary:dic];
        [attDic setObject:font forKey:NSFontAttributeName];
        [attDic setObject:paragraphStyle forKey:NSParagraphStyleAttributeName];
        
        CGSize strSize = [[aString string] boundingRectWithSize:CGSizeMake(width, height)
                                                        options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                                     attributes:attDic
                                                        context:nil].size;
        
        size = CGSizeMake(strSize.width, strSize.height);
        return size;
    }
    

    相关文章

      网友评论

          本文标题:计算NSAttributedString字符串size

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