美文网首页
swift 富文本粗斜体转换适用webHtml样式

swift 富文本粗斜体转换适用webHtml样式

作者: 032c6843a285 | 来源:发表于2022-04-01 15:18 被阅读0次
/// 遍历斜体->转换字体
    func getObliqueFont(tempAttr:NSMutableAttributedString) ->NSMutableAttributedString{
        var needReplaceRanges: [NSRange] = []
        var needReplaceFonts: [AnyHashable] = []
        tempAttr.enumerateAttributes(in: NSMakeRange(0, tempAttr.length), options: NSAttributedString.EnumerationOptions.longestEffectiveRangeNotRequired) { (value, range, stop) in
            if let oblique = value[NSAttributedString.Key.obliqueness] as? CGFloat {
                print("有斜体-----\(oblique)")
                let oldFont = value[NSAttributedString.Key.font] as? UIFont
                let fontDescriptor = oldFont?.fontDescriptor
                let fontDescriptorSymbolicTraits = fontDescriptor?.symbolicTraits
                let isBold = (fontDescriptorSymbolicTraits!.rawValue & UIFontDescriptor.SymbolicTraits.traitBold.rawValue) != 0
                let newFont = generateSpecialFont(withBold: isBold, withItatic: (oblique == 0.3), fontSize: oldFont?.pointSize ?? 0)
                needReplaceRanges.append(NSValue(range: range) as! NSRange)
                if let newFont = newFont {
                    needReplaceFonts.append(newFont)
                }
            }
        }
        if (needReplaceRanges.count != 0) {
            for i in 0..<needReplaceRanges.count {
                let range = needReplaceRanges[i]
                let font = needReplaceFonts[i]
                tempAttr.addAttribute(.font, value: font, range: range)
             }
        }
        return tempAttr
    }
    
    ///生成webView支持展示的样式字体
     func generateSpecialFont(withBold bold: Bool, withItatic italic: Bool, fontSize: CGFloat) -> UIFont? {
        let font = UIFont.systemFont(ofSize: fontSize)
        var symbolicTraits = UIFontDescriptor.SymbolicTraits(rawValue: 0)
        if italic {
            symbolicTraits.insert(.traitItalic)
        }
        if bold {
            symbolicTraits.insert(.traitBold)
        }
         var specialFont: UIFont? = nil
         if let fontDescriptor = font.fontDescriptor.withSymbolicTraits(symbolicTraits) {
             specialFont = UIFont(descriptor: fontDescriptor, size: font.pointSize)
         }
         return specialFont
    }

使用

  
     let   tempAttr = getObliqueFont(tempAttr: self.textView.attributedText)
  let html =  tempAttr.codingToCompleteHtml()


 /// 将富文本编码成html标签
    func codingToCompleteHtml() -> String? {
        let exportParams: [NSAttributedString.DocumentAttributeKey : Any] = [NSAttributedString.DocumentAttributeKey.documentType: NSAttributedString.DocumentType.html, NSAttributedString.DocumentAttributeKey.characterEncoding: String.Encoding.utf8.rawValue]
        if let htmlData = try? self.rz.data(from: NSMakeRange(0, self.rz.length), documentAttributes: exportParams) {
            var string = String.init(data: htmlData, encoding: String.Encoding.utf8)
            string = string?.replacingOccurrences(of: "pt;", with: "px;")
            string = string?.replacingOccurrences(of: "pt}", with: "px}") 
            return string
        }
        return nil
    }

相关文章

  • swift 富文本粗斜体转换适用webHtml样式

    使用

  • Markdown(三)-字体

    Markdown 可以使用以下几种字体: 例如: 效果如下:斜体文本斜体文本粗体文本粗体文本粗斜体文本粗斜体文本

  • markdown语法介绍

    标题 # 一级标题## 二级标题### 三级标题 粗斜体 *斜体文本* ** 粗体文本*****粗...

  • markdown常用技巧

    标题 # 一级标题## 二级标题.......###### 六级标题 粗斜体 * 文本 * 斜体** 文本*...

  • 测试语法

    [ ]选择 斜体 斜体粗体 粗体删除线粗斜体, 粗斜体粗斜体, 粗斜体 引用 无序标题 无序标题 无序标题 标...

  • HTML----文本标签及样式

    文本标签&样式 有语意 em标签用于表示一段内容中的着重点。(斜体)strong标签用于表示一个内容的重要性。(粗...

  • Markdown常用语法

    斜体: *斜体* --> 斜体 加粗: **粗** --> 加粗 加粗斜体: ***粗斜*** --> 加...

  • iOS话题标签#话题#NSMutableAttributedSt

    实现类似以下Label显示话题标签的样式需求,由于话题标签有边框样式,不适用富文本直接设置,所以话题边框的部分用了...

  • CSS(四)文本样式设置

    颜色表及HTML代码(部分) 文本样式 文本样式:对齐方式、文本修饰文本转换、文本缩进.... 作用:美化、修饰页...

  • iOS YYLabel

    1: 设置富文本样式

网友评论

      本文标题:swift 富文本粗斜体转换适用webHtml样式

      本文链接:https://www.haomeiwen.com/subject/ltyajrtx.html