В этом сценарии использования NSAttributedString
мой лучший друг, и я бы пошел с ним.
Сказав это, вам не нужно хранить большой текст в файлах кода, сохраняйте файлы
В комплекте приложений вы можете загрузить файл из App Bundle, используя
if let path = Bundle.main.path(forResource: "file1", ofType: "txt"), let text = try? String(contentsOfFile: path) {
...
}
В удаленном месте вы можете загрузить String с удаленного 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)