本文主要是介绍ios ASTextNode中富文本多行中文显示问题解决方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在使用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
这篇关于ios ASTextNode中富文本多行中文显示问题解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!