Я использую UITextView
и устанавливаю его шрифт и атрибутированный текст по коду.
Случай 1: Пользовательский шрифт — ДА , атрибутированный текст — НЕТ
Текст textView отображается настраиваемым шрифтом.
Я хочу, чтобы приписываемый текст был с пользовательским шрифтом, т.е. Message : в этом случае должен быть выделен жирным шрифтом.
Вариант 2: Пользовательский шрифт — ДА , атрибутированный текст — ДА
Только атрибутированный текст (полужирный текст) отображается пользовательским шрифтом.
Код у меня есть:
- (void)loadTextView
{
_textView.text=NSLocalizedString(@"more_info_text",nil);
_textView.font=[UIFont fontWithName:@"BurbankSmall-Medium" size:16];
NSRange rangeBold = [_textView.text rangeOfString:@"Examples of invalid characters:"];
NSRange rangeBold2 = [_textView.text rangeOfString:@"Restricted text:"];
NSRange rangeBold3 = [_textView.text rangeOfString:@"Message :"];
UIFont *fontText = [self boldFontWithFont:_textView.font];
NSDictionary *dictBoldText = [NSDictionary dictionaryWithObjectsAndKeys:fontText, NSFontAttributeName, nil];
NSMutableAttributedString *mutAttrTextViewString = [[NSMutableAttributedString alloc] initWithString:_textView.text];
[mutAttrTextViewString setAttributes:dictBoldText range:rangeBold];
[mutAttrTextViewString setAttributes:dictBoldText range:rangeBold2];
[mutAttrTextViewString setAttributes:dictBoldText range:rangeBold3];
[_textView setAttributedText:mutAttrTextViewString];
_textView.editable=NO;
_textView.selectable=NO;
}
- (UIFont *)boldFontWithFont:(UIFont *)font
{
UIFontDescriptor * fontD = [font.fontDescriptor
fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold];
return [UIFont fontWithDescriptor:fontD size:16];
}
Когда я комментирую строку setAttributedText:mutAttrTextViewString
, все отображается настраиваемым шрифтом. Когда я раскомментирую его, только атрибутированный текст отображается в пользовательском шрифте, а остальное отображается в шрифте по умолчанию.
Почему это происходит ? Если это невозможно, я думаю включить html-контент в качестве атрибутированного текста, но я хочу рассмотреть это как вариант в худшем случае.
NSMutableAttributedString *mutAttrTextViewString = [[NSMutableAttributedString alloc] initWithString:_textView.text attributes:@{NSFontAttributeName:[UIFont fontWithName:@"BurbankSmall-Medium" size:16]}];
? Если вы зарегистрируетеmutAttrTextViewString
с вашим текущим кодом, вы должны увидеть, что у него нет шрифта для остального текста (там, где вы не указали полужирный шрифт) и не нужно получать по умолчанию шрифт, установленный в_textView
для ОБЫЧНОГО текста. - person Larme   schedule 09.05.2016mutAttrTextViewString
. Это просто строкаNSMutableAttributedString *mutAttrTextViewString = [[NSMutableAttributedString alloc] initWithString:_textView.text];
. В остальном вы продолжаете звонить по[mutAttrTextViewString setAttributes:dictBoldText range:rangeBold];
и двум другим линиям. - person Larme   schedule 09.05.2016font
свойствоUITextView
предназначено для его свойстваtext
(как обычно говорят, обычный текст), а не для его свойстваattributedText
. - person Larme   schedule 09.05.2016