リッチテキストファイル(*.rtf)のテキストをUITextViewに表示する方法です。
操作の流れは
- rtfをメインバンドルに組み込む
- rtfファイルからNSAttributeStringsを作成
- UITextViewのattributedTextプロパティに代入
rtfをメインバンドルに組み込む
今回はTerms.rtf
というファイルをアプリに組み込みます。
rtfファイルからNSAttributeStringsを作成
getTermAttributeString
というメソッドを作りました。
NSAttributeStringsを作成したいと思います。
enum FileError: Error {
case notExitPath
case faildRead
}
func getTermAttributeString() throws -> NSAttributedString {
if let url = Bundle.main.url(forResource: "Terms", withExtension: "rtf") {
do {
let terms = try Data(contentsOf: url)
let attributeString = try NSAttributedString(data: terms, options: [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.rtf], documentAttributes: nil)
return attributeString
} catch let error {
print("ファイルの読み込みに失敗しました: \(error.localizedDescription)")
throw FileError.faildRead
}
} else {
throw FileError.notExitPath
}
}
説明です。
if let url = Bundle.main.url(forResource: "Terms", withExtension: "rtf")
Bundle.main.url
メソッドでメインバンドルのファイルのURLを取得します。
try NSAttributedString(data: terms, options: [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.rtf], documentAttributes: nil)
NSAttributedString
のイニシャライズでoptions
に[NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.rtf]
を指定します。
こうすることでリッチテキストフォーマットでNSAttributedStringを作ることができます。
UITextViewのattributedTextプロパティに代入
作ったNSAttributedStringをattributedTextに代入します。
termsTextView.attributedText = try viewModel.getTermAttributeString()
以上です。