Форматировать текст в 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];
Ответ 3
Вы можете использовать NSMutableAttributedString
для поддержки свойства multi атрибута для вашей строки.
Примечание: - NSMutableAttributedString
доступно в iOS 6.0+.
Изменить: -
Проверьте это: - Как создать UILabel или UITextView с жирным и нормальным текстом в нем?
Ответ 4
Проверьте attributedText
свойство UITextView
https://developer.apple.com/library/ios/documentation/uikit/reference/uitextview_class/Reference/UITextView.html#//apple_ref/occ/instp/UITextView/attributedText
И как вы можете сделать часть своей строки жирным
Любой путь к полужирной части NSString?
Ответ 5
В iOS SDK включен набор текста.
iOS 7 предлагает улучшать читаемость текста, увеличивая вес шрифта, а также возможность устанавливать предпочтительный размер шрифта для приложений, поддерживающих динамический текст. Пользователи будут ожидать, что приложения, написанные для iOS7, будут соблюдать эти настройки, поэтому игнорируйте их на свой страх и риск!
Чтобы использовать динамический тип, вам нужно указать шрифты, используя стили, а не явно указывать имя и размер шрифта. С iOS 7 в UIFont добавлен новый метод preferredFontForTextStyle, который создает шрифт для данного стиля с использованием предпочтений шрифтов пользователей.
Вот отличный учебник на отличном веб-сайте Учебник по текстовому набору Ray wenderlich
Если у вас есть время, посмотрите видеосеанс WWDC 2013 201
Ответ 6
UITextView - это простой текст, и вы не можете применять разные стили (шрифт, цвет) для разных слов.
Я предлагаю вам использовать UIWebView. Это html, поэтому его можно стилизовать.