Добавить опцию для нестандартного размера шрифта в приложении iOS - PullRequest
0 голосов
/ 01 июня 2019

Я занимаюсь разработкой приложения, в этом приложении много текстовых файлов. Пользователь нажимает кнопку, и на новом экране загружаются файлы.

Этот файл содержит только текст, но несколько строк с размером шрифта 15 и другие строки с размером шрифта 10. Пользователь может изменить размер шрифта в настройках этого файла.

Как правильно загрузить файл, чтобы пользователь увеличивал или уменьшал размер шрифта?

Я думаю, что приписанный текст не является правильным выбором для этого.

1 Ответ

1 голос
/ 01 июня 2019

В этом сценарии использования NSAttributedString мой лучший друг, и я бы пошел с ним.

Сказав это, вам не нужно хранить большой текст в файлах кода, сохраняйте файлы

  1. В комплекте приложений вы можете загрузить файл из App Bundle, используя

    if let path = Bundle.main.path(forResource: "file1", ofType: "txt"), let text = try? String(contentsOfFile: path) {
        ...
    }
    
  2. В удаленном месте вы можете загрузить 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)
...