На самом деле, при работе с приписанным текстом, я нашел оптимальным решение для задать содержание сначала и стиль второй (что на самом деле происходит из старых правил набора текста).
В вашем случае я бы сначала установил весь текст на UITextView
, а затем вызвал метод changeColorToTextObject:ToColor:FromLocation:WithLength
, указав только ту часть текста, которую вы хотите, в другом цвете.
Однако, если вы не говорите о статическом контенте, а скорее о чем-то вроде текстового процессора, где пользователь может изменить цвет текста и продолжать писать впоследствии, вам нужно подумать о том, как вы хотите, чтобы это приложение работало. Рассмотрим следующий метод:
- (void)highlightSelectedText {
UIColor *highlightColor = [UIColor redColor];
[self changeColorToTextObject:self.textView ToColor:highlightColor FromLocation:self.textView.selectedRange.location WithLength:self.textView.selectedRange.length];
}
Этот метод позволяет выделить определенную часть текста, пользователь в данный момент выбран:
Если пользователь продолжает вводить новый текст появится в красном цвете:
Если вместо этого, они ставят акцент на месте ш здесь цвет шрифта черный, они будут продолжать писать в черном цвете:
Когда вы думаете о текстовом процессоре, который, кажется, на самом деле довольно хорошо знакомы. И если это достаточно хорошо для вас, вам хорошо идти. Единственный пограничный случай, о котором вам нужно беспокоиться, - это то, что вы делаете, когда текст не выбран.
Однако, если вам нужно больше контролировать динамическое поведение вашего UITextView
(и если вы> iOS 7), вам следует рассмотреть возможность использования текстового набора и, в частности, подкласса NSTextStorage
. Существует introduction video to Text Kit from WWDC 2013 и great tutorial by Ray Wenderlich.