如何在swift 4中将html字符串设置为标签时使用常规和粗体字体设置自定义字体?

诺拉拉姆·谢赫

我正在HTMLAPI响应中获取格式化字符串,因此我需要将其设置为标签,同时保持自定义字体(从我的应用程序开始)并将样式(粗体、常规等)应用于标签。

我使用了一个扩展程序,可以将HTML字符串转换为带有换行符等的常规字符串,但是,我能够在这里设置字体,但只有一种字体并且它仅以常规字体显示,所以整个标签都是一种字体,什么我想要的是将粗体字体设置为粗体HTML部分,并将常规设置为常规HTML部分/标签。

extension String {
    var htmlToAttributedString: NSAttributedString {
        guard let data = data(using: .utf8) else { return NSAttributedString() }
        do {
            return try NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding:String.Encoding.utf8.rawValue], documentAttributes: nil)
        } catch {
            return NSAttributedString()
        }
    }
    var htmlToString: String {
        return htmlToAttributedString.string
    }
}

//set converted html to string here
let whyAttendAttributedText: NSMutableAttributedString = NSMutableAttributedString(attributedString: attendData.whyAttendData?.desc?.htmlToAttributedString ?? NSAttributedString())

//set font here   
whyAttendAttributedText.addAttributes([NSMutableAttributedString.Key.font: CommonSettings.shared.getFont(type: .regular, size: descriptionLabel.font.pointSize), NSMutableAttributedString.Key.foregroundColor: UIColor.white], range: NSMakeRange(0, whyAttendAttributedText.length))

我想为文本设置粗体和常规字体,但是由于我只设置了一种字体,因此无法获得结果,有没有办法将粗体和常规字体设置为HTML字符串?

马赫迪

这应该有帮助:

extension String {

func attributedString(withRegularFont regularFont: UIFont, andBoldFont boldFont: UIFont) -> NSMutableAttributedString {
    var attributedString = NSMutableAttributedString()
        guard let data = self.data(using: .utf8) else { return NSMutableAttributedString() }
        do {
            attributedString = try NSMutableAttributedString(data: data,
                                                             options: [.documentType: NSAttributedString.DocumentType.html,
                                                                       .characterEncoding:String.Encoding.utf8.rawValue],
                                                             documentAttributes: nil)
            let range = NSRange(location: 0, length: attributedString.length)
            attributedString.enumerateAttribute(NSAttributedString.Key.font, in: range, options: .longestEffectiveRangeNotRequired) { value, range, _ in
                let currentFont: UIFont         = value as! UIFont
                var replacementFont: UIFont?    = nil

                if currentFont.fontName.contains("bold") || currentFont.fontName.contains("Bold") {
                    replacementFont             =   boldFont
                } else {
                    replacementFont             =   regularFont
                }

                let replacementAttribute        =   [NSAttributedString.Key.font:replacementFont!]
                attributedString.addAttributes(replacementAttribute, range: range)
            }
        } catch let e {
            print(e.localizedDescription)
        }
       return attributedString
}
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为自定义字体使用粗体,常规和斜体字体样式?

来自分类Dev

如何在自定义tableviewcelll中设置标签的自定义字体?

来自分类Dev

如何使用asp.net从字符串中删除HTML标签(粗体,强壮,字体名称等)

来自分类Dev

如何在情节提要中将自定义字体设置为UILabel

来自分类Dev

如何将字体设置为字符串

来自分类Dev

如何在iOS应用程序中将自定义字体系列设置为系统字体

来自分类Dev

Android如何在画布中设置自定义字体?

来自分类Dev

如何将文件中的字符串值设置为自定义类变量?

来自分类常见问题

如何在Android中为整个应用程序设置自定义字体?

来自分类常见问题

如何在NavigationView中为项目设置自定义字体?

来自分类Dev

如何在RecyclerView中为TextView设置自定义字体?

来自分类Dev

如何在RecyclerView中为TextView设置自定义字体?

来自分类Dev

如何在棒棒糖中为整个应用程序设置自定义字体

来自分类Dev

Dart Polymer:创建时如何在自定义中设置非字符串字段

来自分类Dev

如何使用 OpenSans 自定义字体在 **Swift 4** 中使文本范围带有下划线和粗体

来自分类常见问题

如何在Exoplayer通知中设置自定义布局和字体?

来自分类Dev

如何在python igraph中为顶点标签使用自定义字体?

来自分类Dev

如何在python igraph中为顶点标签使用自定义字体?

来自分类Dev

如何在Swift中为自定义结构和类更改默认的嵌入式字符串

来自分类Dev

如何在Swift中为自定义结构和类更改默认的嵌入式字符串

来自分类Dev

我如何设置自定义字体

来自分类Dev

如何将Xamarin.Forms标签字体设置为粗体

来自分类Dev

如何在delphi Xe8中将标签文本设置为粗体

来自分类Dev

如何获得自定义字体的粗体?

来自分类Dev

如何在gnuplot 5+中将SVG终端的字体粗细设置为“粗体”?

来自分类Dev

如何在敲除自定义绑定中设置基于字符串/命名的模板?

来自分类Dev

如何在Android中设置自定义不同的字体样式

来自分类Dev

如何在.xml文件而不是.java文件中设置自定义字体?

来自分类Dev

如何在summernote中设置自定义字体大小列表?

Related 相关文章

  1. 1

    如何为自定义字体使用粗体,常规和斜体字体样式?

  2. 2

    如何在自定义tableviewcelll中设置标签的自定义字体?

  3. 3

    如何使用asp.net从字符串中删除HTML标签(粗体,强壮,字体名称等)

  4. 4

    如何在情节提要中将自定义字体设置为UILabel

  5. 5

    如何将字体设置为字符串

  6. 6

    如何在iOS应用程序中将自定义字体系列设置为系统字体

  7. 7

    Android如何在画布中设置自定义字体?

  8. 8

    如何将文件中的字符串值设置为自定义类变量?

  9. 9

    如何在Android中为整个应用程序设置自定义字体?

  10. 10

    如何在NavigationView中为项目设置自定义字体?

  11. 11

    如何在RecyclerView中为TextView设置自定义字体?

  12. 12

    如何在RecyclerView中为TextView设置自定义字体?

  13. 13

    如何在棒棒糖中为整个应用程序设置自定义字体

  14. 14

    Dart Polymer:创建时如何在自定义中设置非字符串字段

  15. 15

    如何使用 OpenSans 自定义字体在 **Swift 4** 中使文本范围带有下划线和粗体

  16. 16

    如何在Exoplayer通知中设置自定义布局和字体?

  17. 17

    如何在python igraph中为顶点标签使用自定义字体?

  18. 18

    如何在python igraph中为顶点标签使用自定义字体?

  19. 19

    如何在Swift中为自定义结构和类更改默认的嵌入式字符串

  20. 20

    如何在Swift中为自定义结构和类更改默认的嵌入式字符串

  21. 21

    我如何设置自定义字体

  22. 22

    如何将Xamarin.Forms标签字体设置为粗体

  23. 23

    如何在delphi Xe8中将标签文本设置为粗体

  24. 24

    如何获得自定义字体的粗体?

  25. 25

    如何在gnuplot 5+中将SVG终端的字体粗细设置为“粗体”?

  26. 26

    如何在敲除自定义绑定中设置基于字符串/命名的模板?

  27. 27

    如何在Android中设置自定义不同的字体样式

  28. 28

    如何在.xml文件而不是.java文件中设置自定义字体?

  29. 29

    如何在summernote中设置自定义字体大小列表?

热门标签

归档