Я показываю эту строку (обратите внимание на разрывы):
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 должен иметь возможность обрабатывать простую строку, подобную этой.
Добавление пробелов недостаточно хорошо (по нескольким причинам), должен быть способ взять это под контроль.
Как вы думаете, в чем проблема?