在iOS 10以上系统手机,使用<text>组件时,若文本中有多个换行,会导致文本展示不全,最后一行被截掉一半的问题。 如下图所示:
问题示例
这个问题在Android中好像并没有,所以在WeexSDK的WXTextComponent.mm
中找到- (CGSize)calculateTextHeightWithWidth:(CGFloat)aWidth
方法:
- (CGSize)calculateTextHeightWithWidth:(CGFloat)aWidth
{
...
if (WX_SYS_VERSION_LESS_THAN(@"10.0")) {
// there is something wrong with coreText drawing text height, trying to fix this with more efficent way.
if(actualLineCount && actualLineCount < lineCount) {
suggestSize.height = suggestSize.height * actualLineCount / lineCount;
}
return CGSizeMake(aWidth, suggestSize.height);
}
return CGSizeMake(aWidth, totalHeight);
}
问题就出在这段高度计算上,将上面这段代码修改一下即可:
- (CGSize)calculateTextHeightWithWidth:(CGFloat)aWidth
{
...
// gl fix 解决iOS10以上手机,文本换行导致的文本展示不全,高度计算问题
if(actualLineCount && actualLineCount <= lineCount) {
suggestSize.height = suggestSize.height * actualLineCount / lineCount;
return CGSizeMake(aWidth, suggestSize.height);
} else {
return CGSizeMake(aWidth, totalHeight);
}
}
重新测试了下,修复了,暂时没发现有别的问题。
网友评论