我正在此应用程序中开发一个应用程序,其中有许多文本文件。 用户单击一个按钮,文件就会加载到新屏幕上。
此文件仅包含文本,但只有几行字体大小为15的行和其他行字体大小为10的行。用户可以从该文件的设置更改字体大小。
什么是加载文件以使用户增加或减小字体大小的正确方法?
我认为归因文本不是正确的选择。
答案 0 :(得分:1)
在这个用例中,NSAttributedString
是我最好的朋友,我会和他一起去。
话虽如此,您不必在代码文件中保留大文本,而不必保留文件
在应用捆绑包中,您可以使用
从应用捆绑包中加载文件if let path = Bundle.main.path(forResource: "file1", ofType: "txt"), let text = try? String(contentsOfFile: path) {
...
}
在远程位置,您可以使用以下方式从远程URL加载字符串:
if let url = URL(string: "https://www.example.org"), let text = try? String(contentsOf: url) {
...
}
添加自定义字体大小的选项
您可以在文本中添加HTML标记并使用CSS样式,这是一个示例
let headerFont = UIFont(name: "ArialRoundedMTBold", size: 30)!
let headerStyle = ".heading{font-family:\(headerFont.fontName);font-size:\(Int(headerFont.pointSize));color:#000}"
let commonFont = UIFont(name: "ArialMT", size: 22)!
let commonStyle = "*{font-family:\(commonFont.fontName);font-size:\(Int(commonFont.pointSize));color:#666}"
let htmlData = Data("<style>\(commonStyle)\(headerStyle)</style>\(text)".utf8)
let attributedString = try? NSAttributedString(data: htmlData, options: [
.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue
], documentAttributes: nil)