Я использовал UITextView
, в котором я показываю NSAttributedString
. я получил строку HTML с сервера. Я преобразовал HTML в NSAttributedString, используя приведенный ниже код.
NSMutableAttributedString *attrib = [[NSMutableAttributedString alloc]initWithData:[strHTML dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} documentAttributes:nil error:nil];
Чтобы применить шрифт, я попробовал ниже 2 кода.
- применить атрибут
- Пользовательская строка
Чтобы применить атрибут, я использую приведенный ниже код.
[attrib addAttribute:NSFontAttributeName
value:myFont
range:NSMakeRange(0, attrib.length)];
Для Custom String я сначала создаю ниже NSString
, а затем скрываю в NSAttributedString
NSString *strHTML = [NSString stringWithFormat:@"<span style=\"font-family: myFont; font-size: 12\">%@</span>",@"my string"];
Использование обоих кодов Шрифт успешно изменен. но полужирный и курсив не применяется, только подчеркивание применяется в NSAttributedString.
Я ссылаюсь на ссылки ниже.
- iOS 7 с использованием строки HTML в качестве NSAttributedString И установки шрифта?
- Изменение размера шрифта ios7 при создании nsattributedstring из html
- Как добавить CSS HTML в NSAttributedString?
Для ссылки 3 следует ли применять шрифты и теги со стороны сервера, а затем получать строку HTML?
Любая помощь будет принята !!!
1 ответ
Наконец-то я получил ответ. вы можете проверить ответ larmes (Найти атрибуты из атрибутированной строки, пользователь набрал) или вы можете просто удалить старый атрибут шрифта и применить новый шрифт, используя приведенный ниже код.
NSDictionary *dictAttrib = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)};
NSMutableAttributedString *attrib = [[NSMutableAttributedString alloc]initWithData:[yourHTMLString dataUsingEncoding:NSUTF8StringEncoding] options:dictAttrib documentAttributes:nil error:nil];
[attrib beginEditing];
[attrib enumerateAttribute:NSFontAttributeName inRange:NSMakeRange(0, attrib.length) options:0 usingBlock:^(id value, NSRange range, BOOL *stop) {
if (value) {
UIFont *oldFont = (UIFont *)value;
NSLog(@"%@",oldFont.fontName);
/*----- Remove old font attribute -----*/
[attrib removeAttribute:NSFontAttributeName range:range];
//replace your font with new.
/*----- Add new font attribute -----*/
if ([oldFont.fontName isEqualToString:@"TimesNewRomanPSMT"])
[attrib addAttribute:NSFontAttributeName value:font1 range:range];
else if([oldFont.fontName isEqualToString:@"TimesNewRomanPS-BoldMT"])
[attrib addAttribute:NSFontAttributeName value:font2 range:range];
else if([oldFont.fontName isEqualToString:@"TimesNewRomanPS-ItalicMT"])
[attrib addAttribute:NSFontAttributeName value:font3 range:range];
else if([oldFont.fontName isEqualToString:@"TimesNewRomanPS-BoldItalicMT"])
[attrib addAttribute:NSFontAttributeName value:font4 range:range];
else
[attrib addAttribute:NSFontAttributeName value:font5 range:range];
}
}];
[attrib endEditing];
Спасибо. Может, это тебе поможет.
Похожие вопросы
Связанные вопросы
Новые вопросы
html
HTML (язык гипертекстовой разметки) — это язык разметки для создания веб-страниц и другой информации, отображаемой в веб-браузере. Вопросы относительно HTML должны включать минимальный воспроизводимый пример и некоторое представление о том, чего вы пытаетесь достичь. Этот тег редко используется отдельно и часто в паре с [CSS] и [JavaScript].
NSFontAttributeName
. Нет NSItalicAttributeName или NSBoldAttributeName. Один из способов сделать это - перечислить атрибуты и вдохновить вас этим: stackoverflow.com/questions/23153156/…