2015-03-16 4 views
-1

Я использую этот метод, чтобы изменить цвет на несколько символов моего UITextViewИзменить цвет текста в конкретной ситуации

+(void)changeColorToTextObject : (UITextView *)textView ToColor : (UIColor *)color FromLocation : (int)location WithLength : (int)length 
{ 
    NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithAttributedString: textView.attributedText]; 
    [text addAttribute:NSForegroundColorAttributeName value:color range:NSMakeRange(location, length)]; 
    [textView setAttributedText: text]; 
} 

Он отлично работает, но после того, как я изменить определенный диапазон, я хочу, чтобы иметь возможность продолжить с предыдущий цвет, а не новый цвет, который я только что изменил. Как я могу это сделать?

ответ

1

На самом деле, при работе с приписанным текстом, я нашел оптимальным решение для задать содержание сначала и стиль второй (что на самом деле происходит из старых правил набора текста).

В вашем случае я бы сначала установил весь текст на 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]; 
} 

Этот метод позволяет выделить определенную часть текста, пользователь в данный момент выбран:

enter image description here

Если пользователь продолжает вводить новый текст появится в красном цвете:

enter image description here

Если вместо этого, они ставят акцент на месте ш здесь цвет шрифта черный, они будут продолжать писать в черном цвете:

enter image description here

Когда вы думаете о текстовом процессоре, который, кажется, на самом деле довольно хорошо знакомы. И если это достаточно хорошо для вас, вам хорошо идти. Единственный пограничный случай, о котором вам нужно беспокоиться, - это то, что вы делаете, когда текст не выбран.

Однако, если вам нужно больше контролировать динамическое поведение вашего UITextView (и если вы> iOS 7), вам следует рассмотреть возможность использования текстового набора и, в частности, подкласса NSTextStorage. Существует introduction video to Text Kit from WWDC 2013 и great tutorial by Ray Wenderlich.

0

Сохранить предыдущий цвет в свойство «UIColor», прежде чем применить attributedText к UITextView, и назначить его UITextView после использования «changeColorToTextObject» метода.

Смежные вопросы