ios ASTextNode中富文本多行中文显示问题解决方法

来源:互联网 发布:淘宝上网教可靠吗 编辑:程序博客网 时间:2024/06/05 12:03

  在使用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

原创粉丝点击