我们正在为我们正在开发的应用程序添加最后的润色,这显然意味着要添加一个完整的“条款和条件”和“常见问题解答”部分,包括格式、项目符号、休息时间等等。
所以我试着把它复制粘贴到一个textView中,把“editable”设置为off,这样就保留了项目符号,但不保留粗体文本。
现在,我以前做过属性化字符串,我不得不说,我不确定在一些12页的段落、项目符号列表和中断中做这件事是否容易,这些内容可能会在几年内发生变化。
所以我的问题是,有没有一种方法可以在不使用属性化字符串的情况下做到这一点?
除此之外,也许有一种方法可以循环文本,并寻找一个将应用属性的书面标记?
编辑:
更新。有人建议我使用HTML标签和网页视图。这是常见问题解答所做的(使用标签),我忘记提到我也尝试过。
由于某种原因,它只显示了一个空白的文本视图,尽管是一个很大的视图,好像里面有文本(实际上没有)。
下面是我的代码:
override func awakeFromNib() {
super.awakeFromNib()
termsTitle.text = "Terms and Conditions"
htmlContent = "<p style=\"font-family:Helvetica Neue\"><br/><strong><br/> BLA BLA BLA BLA BLA BLA x 12 Pages"
do {
let str = try NSAttributedString(data: htmlContent.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true)!, options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil)
termsTextView.attributedText = str
} catch {
print("Dim background error")
}
}
2条答案
按热度按时间sbdsn5lh1#
我敢肯定,如果不使用AttributedString,你就无法在文本视图中实现这一点。一个可能的解决方案是使用WebView。将“条款和条件”和“常见问题解答”转换为HTML可能比使用AttributedString要容易得多。
dsekswqp2#
如果您仍想在UITextView中使用HTML,可以尝试使用此函数:
这个函数假设你的主包里有一个
.html
文件,你把文件名(减去扩展名)传递给它(这个文件应该在你的项目里),然后像这样使用它:为了澄清起见,在本例中,textView是视图控制器上的
@IBOutlet
。如果
.html
文件不存在或NSAttributedString转换失败,则此函数返回nil。