Ответ 1
Это определенно сложно. Мне пришлось переопределить подмножество UILabel раньше, и это было сложно. Я думаю, что первое, о чем вы должны подумать, - это то, на каком уровне вы заинтересованы в работе. У него самое основное, UITextView
отвечает за управление графическим контекстом растровой графики и превращение строки в пиксели на экране. Это само по себе является довольно большой проблемой, и если вы хотите переопределить эту функциональность с нуля, вы будете заняты какое-то время.
На более высоком уровне UITextView
делает такие вещи, как разбиение текста на строки, отображение разных шрифтов; выше, и у вас есть такие вещи, как UITextInput Protocol, который позволяет пользователю вводить и обрабатывать содержимое текстового представления.
Что касается деталей реализации, то они, очевидно, недоступны. Самое близкое, что мы можем получить, это dump dump, что интересно, но может не сказать нам многого.
До iOS7 и TextKit обработка текста фактически обрабатывалась WebKit, что означает, что реализация потенциально более беспорядочна для того, чтобы претерпеть этот переход.
Во всяком случае, некоторые вещи указывают вам в правильном (или хотя бы a) направлении:
- ссылка на NSAttributedString Reference, особенно UIKit Additions, которые позволяют вам на самом деле добавить текст в графический контекст;
- Представляем TextKit, некоторый пример кода из WWDC13 (есть также сопровождающее видео)
- Intro to Text Kit из AppCoda.
Я прошу прощения, что этот ответ, вероятно, не так полезен, как я предполагал. В принципе: это действительно большой вопрос; это, вероятно, несколько действительно больших вопросов.