您的位置:首页 > Web前端 > Node.js

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

2017-07-16 15:11 615 查看
  在使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: