私はこの文字列を表示しています(区切りに注意してください):
CONSEJO
NACIONAL
PARA LA
CULTURA
Y LAS ARTES
ここでアップルが提案したコードを使用して、行の高さが26ポイントに一定になるようにNSAttributedStringを構成しました。
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は、このような単純な文字列を処理できる必要があります。
スペースを追加するだけでは十分ではありません(いくつかの理由で)。これを制御する方法が必要です。
問題は何だと思いますか?