我正在显示这个字符串(请注意休息时间):
CONSEJO
NACIONAL
PARA LA
CULTURA
Y LAS ARTES
我已使用apple here建议的代码将NSAttributedString配置为线高不变为26磅:
CGFloat lineSpacing = 26;
CTTextAlignment theAlignment = kCTLeftTextAlignment;
CTParagraphStyleSetting theSettings[3] =
{
{kCTParagraphStyleSpecifierMaximumLineHeight, sizeof(CGFloat), &lineSpacing},
{kCTParagraphStyleSpecifierMinimumLineHeight, sizeof(CGFloat), &lineSpacing},
{kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment), &theAlignment },
};
但是最后一行还有额外的空间:
如果我在单词之间手动添加SPACES,我会得到预期的结果,所以在打印时:
CONSEJO NACIONAL PARA LA CULTURA Y LAS ARTES
它显示了这一点(注意最后一行没有多余的间距):
这不是一个可持续的解决方案,因为我不想手动更改所有字符串以根据帧大小添加空格。
我已经测试了几个月而且我无法解决这个问题,最后一行总是占用更多空间。
我还尝试过“\ r \ n”来查看这是否有不同的结果,但它仍然增加了额外的空间,显示:
Consejo\rNacional\rpara la\rCultura\ry las Artes
制作人:
[左侧使用\ r] [右侧使用SPACE]
http://dl.dropbox.com/u/11470523/Test.png
[此处所有蓝色块的大小相同]
http://dl.dropbox.com/u/11470523/TEsst1%20copy.png
因此空间较小,但仍有比应有的空间更多。
CoreText应该能够像这样处理一个简单的字符串。
添加空格是不够的(出于几个原因),必须有一种方法来控制它。
您认为问题是什么?
答案 0 :(得分:0)
我无法看到图片,但我认为您遇到了我不久前遇到的同样问题,请参阅this。
您可以使用CTTypesetter
和CTTypesetterSuggestClusterBreak
手动处理换行符。我使用字体大小作为一行的高度,我在手动绘制线条时添加了行间距,并且它工作正常。