Строка с атрибутами, не отображающая полужирный и курсивный текст с определенным шрифтом

Я получаю строку html, которую мне нужно отобразить с помощью UILabel. В случае, если я не добавляю UIFont, я вижу строку, как и ожидалось.

+(NSAttributedString *)getAttributedText:(NSString *)text {
NSAttributedString *attrStr = [[NSAttributedString alloc] initWithData:[text dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
return attrStr;
}

введите здесь описание изображения

Но шрифт очень мелкий, поэтому мне нужно его изменить.

+(NSAttributedString *)getAttributedText:(NSString *)text {
NSAttributedString *attrStr = [[NSAttributedString alloc] initWithData:[text dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
NSMutableAttributedString *newString = [[NSMutableAttributedString alloc] initWithAttributedString:attrStr];
NSRange range = (NSRange){0,[newString length]};
[newString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"OpenSans" size:14.0] range:range];
return newString;
}

Теперь я вижу текст как

введите здесь описание изображения

Есть ли другой способ установить шрифт при сохранении атрибутов?


person Astha Gupta    schedule 18.08.2017    source источник
comment
Поскольку курсив и жирный шрифт находятся ВНУТРИ UIFont, поэтому, когда вы их заменяете, все меняется. Вы можете сами изменить HTMLString или перебрать NSAttributedString.   -  person Larme    schedule 18.08.2017
comment
Пожалуйста, проверьте мой ответ   -  person Saurabh Jain    schedule 20.08.2017


Ответы (1)


+(NSAttributedString *)getAttributedText:(NSString *)text {
      text = [text stringByAppendingString:[NSString stringWithFormat:@"<style>body{font-size:%fpx;}</style>", 15]];   // Font size that you want to display for text

      NSAttributedString *attrStr = [[NSAttributedString alloc] initWithData:[text dataUsingEncoding:NSUnicodeStringEncoding]
                                                               options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
                                                                         NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)}
                                                    documentAttributes:nil
                                                                 error:nil];
}

Это может вам помочь...!!!

person Yagnesh Dobariya    schedule 18.08.2017
comment
Эй, можно ли использовать это как для размера шрифта, так и для имени? - person Astha Gupta; 18.08.2017
comment
текст = [текстовая строкаByAppendingString:[NSString stringWithFormat:@‹style›body{семейство шрифтов: '%@'; размер шрифта:%fpx;}‹/style›, Имя шрифта, Размер шрифта]]; но как вы определите, какое слово будет жирным или подчеркнутым. Так что лучше использовать тот же самый шрифт с большим размером шрифта. - person Yagnesh Dobariya; 18.08.2017