CoreText - пробелы не переносятся? - PullRequest
2 голосов
/ 26 марта 2012

Я заметил в CoreText, при разработке собственного пользовательского UITextView, а также при взгляде на SimpleTextInput от Apple, что пробел или "" не разрывается (или не переходит на следующую строку), когда у него заканчивается пробел в конце строки включен. Вместо этого он продолжает рисоваться на той же линии за пределами ширины вида.

Это ошибка, или это предполагаемое поведение? Есть ли в любом случае пробелы для переноса / перехода на следующую строку с CoreText?

ОБНОВЛЕНИЕ: Попытка индивидуально установить пробелы для атрибута kCTLineBreakByCharWrapping, и это не сработало. Подумав, может быть, есть какой-то юникод-символ, который я мог бы ввести вместо @" ", чтобы он мог работать должным образом? Попытка избежать ручного ввода этого кода в код.

Ответы [ 2 ]

7 голосов
/ 27 марта 2012

По замыслу один пробел не вызывает разрыв строки.Только видимый символ, который пересекает поле, вызывает разрыв строки.

Вы можете найти ширину пробела в конце CTLine, используя CTLineGetTrailingWhitespaceWidth.

Возможно, вы можете сделатьсимвол пробела вызывает разрыв строки (если он пересекает поле), прикрепляя к нему атрибут CTRunDelegate.Вы должны будете сделать отчет CTRunDelegate соответствующей ширины, подъема и спуска, который вам, вероятно, придется искать в CTFont.Вероятно, вы можете использовать один экземпляр CTRunDelegate для всех пробелов, которые имеют одинаковый шрифт и размер.

4 голосов
/ 20 декабря 2012

Я использовал - вместо "", чем прежде чем рисовать текст, я должен сделать место, где - был очищен как пустой Таким образом, вы можете делать что-то, что вам нравится в пустом пространстве, я рисую emoji в этих местах, это работает для меня. Вы можете попробовать ~ ^.^

...