iOS 富文本风格NSMutableParagraphStyle,UITextView动态高度

开发过程中,经常会遇到动态计算行高的问题,

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullableNSDictionary *)attributes context:(nullable NSStringDrawingContext *)contextNS_AVAILABLE(10_11, 7_0);

是苹果推荐的计算方法,显然会遇到段落格式问题,例如行间距、缩进等格式设置需求,attributes传进来的字典中,包含我们设置的字体及格式,其中NSParagraphStyleAttributeName是设置段落风格,NSFontAttributeName是设置字体。
在使用这个函数去计算的时候返回的高度会出现不准确的现象
使用该方法的时候要注意 attributes:@{NSFontAttributeName:descFont,
NSParagraphStyleAttributeName :descStyle}
要对应上,不然就会出现返回的高度不准备的现象(一般都会偏小)
如下边的代码所示:

NSMutableAttributedString  * muStr = [[NSMutableAttributedString alloc] initWithString:@"测试字符串"
       UIFont *descFont = [UIFont PingFangSC_Regular_WithSize:12];  
         
       NSMutableParagraphStyle *descStyle = [[NSMutableParagraphStyle alloc]init];  
       [descStyle setLineSpacing:1];//行间距  
         
       CGSize descSize = [muStr boundingRectWithSize:CGSizeMake(w, MAXFLOAT)  
                                                   options:NSStringDrawingUsesLineFragmentOrigin  
                                                attributes:@{NSFontAttributeName:descFont,  
                                                             NSParagraphStyleAttributeName :descStyle}  
                                                   context:nil].size;  

你可能感兴趣的:(iOS 富文本风格NSMutableParagraphStyle,UITextView动态高度)