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
简单点说,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
相关文章推荐
- ubuntu显示中文文本乱码解决方法
- Ubuntu/Debian下JAVA 中文/图片中文字体乱码显示问题解决方法
- JBuilder2006在Linux下安装及的中文显示问题的解决方法
- 解决Linux下Flash视频网站的动态中文显示方块问题方法
- 【iReport学习一】iReport 3.7版本中,PDF中文显示问题解决方法
- 解决JSP中文显示问题的几个方法
- CEGUI中文显示问题的解决方法
- android的textview显示音标问题解决方法
- flash builder控制台显示中文乱码问题解决方法
- 发布到SPS站点下的ASP.NET页面上的中文不能正常显示__问题解决方法
- MySQL中文常见乱码问题解决方法其一,可以解决觉大多是乱码问题。如果你的中文显示为?的时候一般都有效。
- 解决Silverlight TextBlock控件无滚动条显示文本的方法
- ios pdf自动换行方法(解决中文乱码问题)
- 崩溃,source Insight显示linux代码中文注释乱码问题,以及很傻很天真的解决方法
- Fedora中文显示问题解决方法(包括目录,xmms,gaim)
- php 中文字符入库或显示乱码问题的解决方法
- SVN+Apache在windows下http访问 显示中文乱码问题的解决方法
- JBuilderX中文显示和光标问题的解决方法
- jsp页面显示及数据库中文乱码问题解决方法
- 某些开发版中的Qt Designer菜单等中文显示为乱码问题解决方法初探