iOS UILabel 加载 HTML 文字

2018-11-28  本文已影响10人  Zaki丶

记录一下之前项目加载 HTML 文字的一些问题

HTML 文字加载 大家在其它的 blog 里都有方法实现,我就不赘述了

遇到了一个问题就是 需要将文本文字按大小显示

需求是这样的:

image.png

之前代码中显示 HTML 文字是先加载 HTML 文字,然后再设置的 font 大小,所以字体大小是一样的

这样显示的:


image.png

但是这样无法满足产品的需求,所以要将需要标注的为小号的字体利用 html 文本 <small>##</small>标注起来, 然后再将该段所有 HTML 文本使用 html 字体样式<font size='4'>##</font>标注起来.

最重要的一步,将本地设置字体大小的代码删除掉. 就可以按照产品需求显示了

image.png

let contentText = "<font color='#E21A43'><big>请确认用户是老人或小孩,一经设置不可修改</big></font><br/><br/>设置后,用户仅需支付本单半价费用<br/><br/><font color='#898989'><small>注:小孩可以门店存包柜第三格高度以下为准</small></font>"

        contentLabel.font = UIFont.systemFont(ofSize: kRemindTextFont)
        
        if contentText.contains("</font>") {
            do{
                if contentText.contains("</small>") || contentText.contains("</big>") {
                    
                    let text = "<font size='4'>" + contentText + "</font>"
                    contentLabel.attributedText = try NSAttributedString(data: text.data(using: String.Encoding.unicode, allowLossyConversion: true)!, options: [.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil)
                    
                } else {
                    
                    contentLabel.attributedText = try NSAttributedString(data: contentText.data(using: String.Encoding.unicode, allowLossyConversion: true)!, options: [.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil)
                    contentLabel.font = UIFont.systemFont(ofSize: kRemindTextFont)
                    
                }

            }catch let error as NSError {
                print(error.localizedDescription)
            }
        }
上一篇下一篇

猜你喜欢

热点阅读