在使用ASTextNode计算view的高度时,利用富文本计算高度的方法计算多行中文显示时,会在底部多出一些空白区域的高度
简单点说,1.中文字符串在利用NSAttributedString 的boundingRectWithSize:options:context来计算ASTextNode的高度时,实际高度比需要的高度高出一些区域
2.纯英文字符在利用上面的函数计算高度时是没有问题的
我猜想,因为AS框架是老外写的,估计对中文的支持不够吧???
中文字符高度计算正确的解决方案:
attrString为需要计算高度的富文本字符串
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)attrString);
CGSize targetSize = CGSizeMake(kScreenWidth, CGFLOAT_MAX);
CGSize fitSize = CTFramesetterSuggestFrameSizeWithConstraints(framesetter, CFRangeMake(0, [attrString length]), NULL, targetSize, NULL);
CFRelease(framesetter);
然后我门就可以拿到fitSize的高度和宽度,然后就可以给view赋值高度了
fitSize.width 和 fitSize.height