iOS富文本给定字体大小计算长度和宽度

1、给定字体大小和宽度,计算文本的显示高度

- (CGFloat)textHeightWithString:(NSString*)string Font:(UIFont*)font maxWidth:(CGFloat)width{

    CGFloatheight =0;

    do{

        if(self.length<=0) {

            break;

        }

        //字符串中的空格会影响换行的高度,填充空格后再计算

        NSString *allStr = [string stringByReplacingOccurrencesOfString:@" " withString:@"a"];

        NSDictionary *attribute = @{NSFontAttributeName:font};

        CGRect retSize = [allStr boundingRectWithSize:CGSizeMake(width, MAXFLOAT) options:NSStringDrawingTruncatesLastVisibleLine |

                          NSStringDrawingUsesLineFragmentOrigin |

                          NSStringDrawingUsesFontLeading attributes:attribute context:nil];

        height = retSize.size.height;

    }while(0);

    return ceil(height);

}

2、给定字体大小和高度,计算文本的显示宽度

- (CGFloat)textWidthWithString:(NSString*)string Font:(UIFont*)font maxHeight:(CGFloat)height{

    CGFloatwidth =0;

    do{

        if(self.length<=0) {

            break;

        }

        NSDictionary *attribute = @{NSFontAttributeName:font};

        CGRect retSize = [string boundingRectWithSize:CGSizeMake(MAXFLOAT, height) options:NSStringDrawingTruncatesLastVisibleLine |

                          NSStringDrawingUsesLineFragmentOrigin |

                          NSStringDrawingUsesFontLeading attributes:attribute context:nil];

        width = retSize.size.width;

    }while(0);

    return ceil(width);

}

3、给定字体大小、显示宽度、段落格式,计算文本的显示高度

- (CGFloat)textHeightWithString:(NSString*)string Font:(UIFont*)font maxWidth:(CGFloat)width paragraphStyle:(NSMutableParagraphStyle*)paragraphStyle{

    CGFloatheight =0;

    do{

        if(self.length<=0) {

            break;

        }

        //字符串中的空格会影响换行的高度,填充空格后再计算

        NSString *allStr = [string stringByReplacingOccurrencesOfString:@" " withString:@"a"];

        NSDictionary *attribute = @{NSFontAttributeName:font,NSParagraphStyleAttributeName:paragraphStyle};

        CGRect retSize = [allStr boundingRectWithSize:CGSizeMake(width, MAXFLOAT) options:NSStringDrawingTruncatesLastVisibleLine |

                          NSStringDrawingUsesLineFragmentOrigin |

                          NSStringDrawingUsesFontLeading attributes:attribute context:nil];

        height = retSize.size.height;


    }while(0);

    returnceil(height);

}

4、给定字体大小、最大显示宽高、截断方式,计算文本的显示

- (CGSize)textSizeWithString:(Nsstring *)string Font:(UIFont*)font maxSize:(CGSize)maxSize lineBreakMode:(NSLineBreakMode)lineBreakMode{

    CGSize result = CGSizeZero;

    do{

        if(self.length<=0) {

            break;

        }       

        NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];

        [stylesetLineBreakMode:lineBreakMode];

        NSDictionary *attribute = @{NSFontAttributeName: font, NSParagraphStyleAttributeName: style};

        CGRect retSize = [string boundingRectWithSize:CGSizeMake(maxSize.width, maxSize.height) options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attribute context:nil];

        result =CGSizeMake(CGRectGetWidth(retSize),CGRectGetHeight(retSize));

    }while(0);

    returnresult;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容