Курсивный шрифт не работает при добавлении пользовательского шрифта к анализируемому HTML-контенту в UITextView в iOS

#ios #objective-c #xcode8 #ios10 #nsattributedstring

#iOS #objective-c #xcode8 #ios10 #nsattributedstring

Вопрос:

У меня есть textview, в котором я анализирую и HTML-контент, и он работает нормально. Но теги, помеченные курсивом, не работают. Я использую пользовательский шрифт. Ниже приведен пример кода:

 NSString *messages = @"<b>Bold</b><br><i>Italic</i><p> <del>Deleted</del><p>List<ul><li>Coffee</li><li type='square'>Tea</li></ul><br><a href='URL'>Link </a>";

NSString *stringWithFont = [NSString stringWithFormat:@"<span style="font-family: OpenSans; font-size: 14">%@</span>", messages];

NSAttributedString *attributedString = [[NSAttributedString alloc]
                                                initWithData: [stringWithFont dataUsingEncoding:NSUnicodeStringEncoding]
                                                options: @{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
                                                documentAttributes: nil
                                                error: nil
                                                ];

_notificationTextView.attributedText = attributedString;
  

Вот как это выглядит, обратите внимание, что курсив не сработал.

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

Обновить

В настоящее время мой проект включает в себя все шрифты Opensans, такие как обычный, курсивный, жирный, полужирный и т.д. Итак, если я удалю светлый шрифт или его ссылку из своего проекта, похоже, это сработает. Похоже на какой-то странный конфликт с обычным и легким шрифтом. У кого-нибудь есть идеи?

Комментарии:

1. ваш пакет содержит этот курсивный шрифт?

2. Да, он добавлен в комплект, это файл шрифта, который я использую mediafire.com/file/cpjerw9wwipppmq/OpenSansFont.zip

3. и он также добавлен в список, верно?

4. Да, он также добавлен в plist. Если вам интересно, вы можете ознакомиться с демонстрационным проектом по этой проблеме здесь: mediafire.com/file/d1q5ipxwjqfd62r/CustomFontTest.zip

5. @ravi.p Не похоже, что курсивный шрифт вообще не работает, поскольку в настоящее время я добавляю его в строку HTML для использования OpenSans. Поэтому он должен автоматически определять жирный курсив и т. Д. Если я укажу использовать OpenSans-Italic, это сработает, но все тексты выделены курсивом.

Ответ №1:

Это работает для меня. Отображение курсивного текста. Использовать

      self.txtView.attributedText=attributedString;