Форматировать текст в UITextView

Я делаю "О странице" для своего приложения, и мне нужно вставить на эту страницу довольно большой объем текста (текст не будет доступен для редактирования).

Я использую UITextView для этой цели. Однако мне нужно, чтобы некоторые слова были выделены жирным шрифтом (например, заголовки). Но я не могу этого добиться. UITextView удаляет все мое форматирование.

У меня нет кода для показа здесь, потому что я вставляю весь свой текст только в IB.

Есть ли способ обхода? Например.. Я хочу, чтобы заголовок был выделен жирным шрифтом.

" О корпорации ABC

gkskgsagdfgfskgfjkgfgljdgsfjgdsjfgdjlsgflgdslgfljdsgfljgdsjlgfljdsgfljdgslfgls.
jdfjkhdsjlfhdlsfhkldshfkldshflkdhlkfhdklsfhlksdhflkdshflkhdsflkhsdklfhlksdhflkshf

fjhdshfkldshfkldhsfklhdsklfhlkdshfklhdsklfhdklsfhkdshfklhdsklfhklsdfhkldshfkhdsklf

fhjdgfkdgsjkfgjkdsgfjkdsgjfgjdkgfjgsjdfgjkdsgfjkgsdjkfgjsdgfjgsdjkfgjksdgfjkgskjfgs"

Ответ 1

Сначала сохраните текстовое свойство textView как "Attributed", после этого просто выберите текст и измените его стиль и шрифт по своему усмотрению.

P.S.. Все это нужно сделать в панели инспектора атрибутов IB.

EDIT:

Подробнее см. эту ссылку.

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

Ответ 2

Вы можете использовать NSAttributedString, установить шрифт текста, цвета переднего плана и фона, StrikeThrough и тень и т.д.

Атрибутивные строки создают связь между символами и их атрибутами. Как и объекты NSString, существуют два варианта: NSAttributedString и NSMutableAttributedString. Хотя предыдущие версии iOS поддерживали атрибутированные строки, до тех пор, пока iOS 6, которые управляют такими кнопками, ярлыками, текстовыми полями и текстовыми полями, не было определено свойство управлять атрибутами. Атрибуты применяются к ряду символов, поэтому вы можете, например, установить атрибут StrikeThrough только для части строки. Важно также отметить, что шрифт по умолчанию для атрибутных строковых объектов - 12-точечная версия Helvetica. Имейте это в виду, если вы установите атрибут шрифта для диапазона, отличного от полной строки. Следующие атрибуты могут быть установлены с атрибутными строками:

NSString *const NSFontAttributeName;
NSString *const NSParagraphStyleAttributeName;
NSString *const NSForegroundColorAttributeName;
NSString *const NSBackgroundColorAttributeName; 
NSString *const NSLigatureAttributeName;
NSString *const NSKernAttributeName;
NSString *const NSStrikethroughStyleAttributeName;
NSString *const NSUnderlineStyleAttributeName; 
NSString *const NSStrokeColorAttributeName;
NSString *const NSStrokeWidthAttributeName;
NSString *const NSShadowAttributeName; 
NSString *const NSVerticalGlyphFormAttributeName;



 // Create attributed string
 NSString *str = @"example for underline \nexample for font \nexample for bold \nexample for italics"; 

 NSMutableAttributedString *attributedString =
 [[NSMutableAttributedString alloc] initWithString:str];

 // Add attribute NSUnderlineStyleAttributeName 
 [attributedString addAttribute:NSUnderlineStyleAttributeName 
                   value:[NSNumber numberWithInt:NSUnderlineStyleSingle] 
                   range:NSMakeRange(12, 9)];
 [attributedString addAttribute:NSUnderlineStyleAttributeName
                   value:[NSNumber numberWithInt:NSUnderlineStyleSingle]
                   range:NSMakeRange(12, 9)];

 // Set background color for entire range
 [attributedString addAttribute:NSBackgroundColorAttributeName
                   value:[UIColor yellowColor]
                   range:NSMakeRange(0, [attributedString length])];


 // Create NSMutableParagraphStyle object
 NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
 paragraph.alignment = NSTextAlignmentCenter;

 // Add attribute NSParagraphStyleAttributeName
 [attributedString addAttribute:NSParagraphStyleAttributeName 
                   value:paragraph
                   range:NSMakeRange(0, [attributedString length])];



 // Set font, notice the range is for the whole string
 UIFont *font = [UIFont fontWithName:@"Helvetica" size:18]; 
 [attributedString addAttribute:NSFontAttributeName 
                   value:font
                   range:NSMakeRange(35, 4)];



 // Set font, notice the range is for the whole string
 UIFont *fontBold = [UIFont fontWithName:@"Helvetica-Bold" size:18];
 [attributedString addAttribute:NSFontAttributeName 
                   value:fontBold 
                   range:NSMakeRange(53, 4)];

 // Set font, notice the range is for the whole string 
 UIFont *fontItalics = [UIFont fontWithName:@"Helvetica-Oblique" size:18];
 [attributedString addAttribute:NSFontAttributeName 
                   value:fontItalics
                   range:NSMakeRange(71, 7)];



 // Set label text to attributed string
 [self.mytextView setAttributedText:attributedString];

Ответ 5

В iOS SDK включен набор текста. iOS 7 предлагает улучшать читаемость текста, увеличивая вес шрифта, а также возможность устанавливать предпочтительный размер шрифта для приложений, поддерживающих динамический текст. Пользователи будут ожидать, что приложения, написанные для iOS7, будут соблюдать эти настройки, поэтому игнорируйте их на свой страх и риск! Чтобы использовать динамический тип, вам нужно указать шрифты, используя стили, а не явно указывать имя и размер шрифта. С iOS 7 в UIFont добавлен новый метод preferredFontForTextStyle, который создает шрифт для данного стиля с использованием предпочтений шрифтов пользователей.

Вот отличный учебник на отличном веб-сайте Учебник по текстовому набору Ray wenderlich

Если у вас есть время, посмотрите видеосеанс WWDC 2013 201

Ответ 6

UITextView - это простой текст, и вы не можете применять разные стили (шрифт, цвет) для разных слов. Я предлагаю вам использовать UIWebView. Это html, поэтому его можно стилизовать.