我正在显示这个字符串(注意中断):
CONSEJO
NACIONAL
PARA LA
CULTURA
Y LAS ARTES
我已经使用苹果在此处建议的代码将 NSAttributedString 配置为将行高常量设置为 26 点:
CGFloat lineSpacing = 26;
CTTextAlignment theAlignment = kCTLeftTextAlignment;
CTParagraphStyleSetting theSettings[3] =
{
{kCTParagraphStyleSpecifierMaximumLineHeight, sizeof(CGFloat), &lineSpacing},
{kCTParagraphStyleSpecifierMinimumLineHeight, sizeof(CGFloat), &lineSpacing},
{kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment), &theAlignment },
};
但是最后一行有额外的空间:
如果我在单词之间手动添加空格,我会得到预期的结果,所以在打印时:
CONSEJO NACIONAL PARA LA CULTURA Y LAS ARTES
它显示了这一点(注意最后一行没有额外的间距):
这不是一个可持续的解决方案,因为我不想手动更改所有字符串以根据帧大小添加空格。
我已经测试了几个月,但我无法解决这个问题,最后一行总是有更多空间。
我还尝试了“\r”,看看这是否得到了不同的结果,但它仍然增加了额外的空间,显示:
Consejo\rNacional\rpara la\rCultura\ry las Artes
出品:
[左使用 \r] [右使用空格]
[这里所有的蓝色块都一样大]
所以空间变少了,但仍然超出了应有的空间。
CoreText 应该能够处理这样的简单字符串。
添加空格还不够好(有几个原因),必须有一种方法来控制它。
你认为问题是什么?