Кернинг в iOS UITextView

Для того, что, по-видимому,ошибка» UITextView, похоже, не поддерживает кернинг, как другие элементы UIKit. Есть ли обходной путь, чтобы заставить работать кернинг?

Чтобы было ясно, яЯ говорю о расстоянии между парами символов, которые определены в файле шрифта, а не об общем расстоянии между всеми символами. ИспользуяNSAttributedString сNSKernAttributeName будет регулировать расстояние между всеми символами, но встроенные пары символов по-прежнему нет работа.

Например:

Есть ли обходной путь, чтобы это исправить?

Один простой обходной путь, который я обнаружил, заключается в добавлении стилей CSS в UITextView, которые включают кернинг. Если я использую недокументированный методsetContentToHTMLString: Я могу ввести CSS в секретный веб-просмотр в текстовом представлении.

NSString *css = @"*{text-rendering: optimizeLegibility;}";
NSString *html = [NSString stringWithFormat:@"%@Your HTML Text", css];
[textView performSelector:@selector(setContentToHTMLString:) withObject:html];

Это решает проблему немедленно; однако, вполне вероятно, что приложение будет отклонено. Есть ли безопасный способ проникнуть немного CSS в текстовое представление?

Другие обходные пути, с которыми я экспериментировал, включают:

Использование веб-просмотра и contenteditable свойства. Это н'Идеально, потому что webview делает кучу дополнительных вещей, которые мешают, например, представление вспомогательного ввода, которое может 'это легко спрятать.

ПодклассыUITextView и визуализация текста вручную с основным текстом. Это сложнее, чем яЯ надеялся, потому что все вещи выбора также должны быть перенастроены. Потому что 'UITextViewчастные подклассыUITextPosition а такжеUITextRange это огромная боль в заднице, если не совсем невозможно.

Ответы на вопрос(6)

Ваш ответ на вопрос