it-roy-ru.com

Подчеркните текст в UITextView

Как я могу подчеркнуть текст в UITextView. Я понимаю, что мне нужно создать подкласс UITextView, но что будет под drawRect:?

Благодарю.

11
James Anderson

Попробуйте использовать NSAttributedString следующим образом и установите в UITextView. Это работает для iOS6.

NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:@"Some String"];
[attString addAttribute:(NSString*)kCTUnderlineStyleAttributeName 
                   value:[NSNumber numberWithInt:kCTUnderlineStyleSingle] 
                   range:(NSRange){0,[attString length]}];

Для получения дополнительной информации о NSAttributedString проверьте это Как вы используете NSAttributedString?

Например:

textView.attributedText = attString;

Из документация Apple по UITextView ,

В iOS 6 и более поздних версиях этот класс поддерживает несколько стилей текста через использование свойства attribute.Text. (Стилизованный текст не поддерживается в Более ранних версиях iOS.) Установка значения для этого свойства вызывает текстовое представление, чтобы использовать информацию стиля, предоставленную в приписанном строка. Вы по-прежнему можете использовать шрифт, textColor и textAlignment свойства для установки атрибутов стиля, но эти свойства применяются ко всем текста в текстовом представлении.

attributeText:

Стилизованный текст, отображаемый в текстовом представлении.

@property(nonatomic,copy) NSAttributedString *attributedText

Обсуждение: Это свойство по умолчанию равно nil. Присвоение нового значения этому свойству также заменяет значение текстового свойства теми же строковыми данными, хотя и без какой-либо информации о форматировании. Кроме того, присвоение нового значения обновляет значения в свойствах font, textColor и textAlignment, чтобы они отражали информацию о стиле, начиная с местоположения 0 в присвоенной строке.

22
iDev

Если вы хотите избежать включения CoreText, вы можете использовать приписанную строку с этим атрибутом:

@{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)}
8
Ray Fix

Если это статический текст, вы можете подчеркнуть его в Интерфейсном Разработчике. Убедитесь, что сначала сделали текст «Attributed», выбрав «Attributed» в выпадающем меню:

enter image description here

6
Adam Johns
textViewMessage.linkTextAttributes = @{NSForegroundColorAttributeName: [UIColor blueColor], NSUnderlineStyleAttributeName: [NSNumber numberWithInt:NSUnderlineStyleSingle]};
2
jose920405

Если вы хотите отформатировать ваш текст (с подчеркнутыми словами, ссылками, цветными словами ...), я предлагаю вам использовать FTCoreText

1
Solidus
-(IBAction)underline:(id)sender
{
    NSDictionary *underlineAttribute = @{NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)};
    texts.attributedText = [[NSAttributedString alloc] initWithString:texts.text
                                                           attributes:underlineAttribute];
}
1
user3651677

Вы не можете использовать «kCTUnderlineStyleAttributeName» или «kCTUnderlineStyleSingle» Теперь вы должны сделать это так:

    NSMutableAttributedString *attString = [[NSMutableAttributedString alloc] initWithString:@"Text"];
[attString addAttribute:NSUnderlineStyleAttributeName
                  value:@(NSUnderlineStyleSingle)
                  range:(NSRange){0,[attString length]}];
0
Tayo119

Я рекомендую вам использовать MFUnderlinedTextView , это будет полезно.

0
yebw

Если вы используете iOS 6, то вы можете использовать атрибут attributedText UITextView . Применить подчеркивание форматирования к тексту. Вы также можете установить свойство typingAttributes, чтобы гарантировать, что текст, который вводит пользователь, имеет определенный набор форматирования, если хотите.

0
rmaddy

Я рекомендую вам использовать CoreText . Базовое руководство здесь на raywenderlich .

0
Mathew Varghese