在iOS应用中添加自定义字体大小的选项

时间:2019-06-01 07:15:48

标签: ios swift uifont

我正在此应用程序中开发一个应用程序,其中有许多文本文件。 用户单击一个按钮,文件就会加载到新屏幕上。

此文件仅包含文本,但只有几行字体大小为15的行和其他行字体大小为10的行。用户可以从该文件的设置更改字体大小。

什么是加载文件以使用户增加或减小字体大小的正确方法?

我认为归因文本不是正确的选择。

1 个答案:

答案 0 :(得分:1)

在这个用例中,NSAttributedString是我最好的朋友,我会和他一起去。

话虽如此,您不必在代码文件中保留大文本,而不必保留文件

  1. 在应用捆绑包中,您可以使用

    从应用捆绑包中加载文件
    if let path = Bundle.main.path(forResource: "file1", ofType: "txt"), let text = try? String(contentsOfFile: path) {
        ...
    }
    
  2. 在远程位置,您可以使用以下方式从远程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)