【问题标题】:CoreText adds extra space to the las line of every paragraphCoreText 为每个段落的 las 行添加了额外的空间
【发布时间】:2019-08-19 11:35:36
【问题描述】:

我正在显示这个字符串(注意中断):

CONSEJO
NACIONAL
PARA LA
CULTURA
Y LAS ARTES

我已使用苹果here 建议的代码将 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 应该能够处理这样的简单字符串。

添加空格还不够好(有几个原因),必须有办法控制它。

你认为问题是什么?

【问题讨论】:

    标签: iphone ios ipad core-text nsattributedstring


    【解决方案1】:

    我看不到图片,但我想你遇到了我不久前遇到的同样问题,请参阅this

    您可以使用CTTypesetterCTTypesetterSuggestClusterBreak 手动处理换行符。我使用字体大小作为线条的高度,我在手动绘制线条时添加了行距,效果很好。

    【讨论】:

      猜你喜欢
      • 2015-04-22
      • 2013-08-30
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多