Кернинг в 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
это огромная боль в заднице, если не совсем невозможно.