#html #ios #swift #webview #textview
Вопрос:
Я пытаюсь реализовать html внутри UITextView, но мне не удается отобразить абзацы или любые другие теги из HTML, у которых есть свои собственные классы, первая строка, в которой работает только p без класса, но другая с классом-нет. Может кто-нибудь выяснить, где я ошибаюсь?
Заранее спасибо.
.replacingOccurrences(of: "<p", with: "<p style="font-family:Trenda-Regular;font-size:14px;"")
.replacingOccurrences(of: "<p class="semi-bold" ", with: "<p style="font-family:Trenda-Semibold;font-size:14px;"")
Редактировать
let textView: UITextView = {
let textView = UITextView()
textView.isEditable = false
let htmlText =
"""
<html>
<head>
<title>Terms of Use</title>
</head>
<body>
<p class="semi-bold">You shall not:</p>
</body>
</html>
"""
textView.attributedText = html.htmlToAttributedString
textView.translatesAutoresizingMaskIntoConstraints = false
return textView
}()
extension String {
var localized: String {
return NSLocalizedString(self, tableName: nil, bundle: Bundle.main, value: "", comment: "")
}
var htmlToAttributedString: NSAttributedString? {
let text = self.replacingOccurrences(of: "<h3", with: "<h3 style="font-family:Trenda-Semibold;font-size:32px;"")
.replacingOccurrences(of: "<h4", with: "<h4 style="font-family:Trenda-Regular;font-size:24px;"")
.replacingOccurrences(of: "<h5", with: "<h5 style="font-family:Trenda-Regular;font-size:20px;"")
.replacingOccurrences(of: "<p", with: "<p style="font-family:Trenda-Regular;font-size:14px;"")
.replacingOccurrences(of: "<p class="semi-bold" ", with: "<p style="font-family:Trenda-Semibold;font-size:14px;"")
.replacingOccurrences(of: "<strong", with: "<strong style="font-family:Trenda-Regular;font-size:14px;"")
.replacingOccurrences(of: "<li", with: "<li style="font-family:Trenda-Regular;font-size:14px;"")
.replacingOccurrences(of: "</ul>", with: "</ul></br>")
guard let data = text.data(using: .utf8) else { return nil }
do {
return try NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding:String.Encoding.utf8.rawValue], documentAttributes: nil)
} catch {
return nil
}
}
var htmlToString: String {
return htmlToAttributedString?.string ?? ""
}
}
Комментарии:
1.
NSAttributedString
не справится с этой работой? Что за код после этого? Как вы используете полученный результатString
?2. извините, мой вопрос был написан не очень хорошо. Я отредактировал свой вопрос, пожалуйста, взгляните. @Larme
3. Обратите внимание, что сначала вы
<p
заменяете p1, а затем"<p class="semi-bold"
p2 , но если бы это было до a"<p class="semi-bold"
, это было бы заменено на p1, а не на p2. Измените порядок