[Swift4] Sử dụng UITextView để hiển thị text trong file định dạng RichTextFile(rtf)
Vâng mình xin giới thiệu cách sử dụng UITextView để hiển thị text trong các file định dạng (*.rtf) Luồng thao tác sẽ như sau Import rtf vào mainbundle từ file rtf create NSAttributeStrings Assign vào property attributedText của UITextView Import rtf vào mainbundle Như ở ví dụ của mình ...
Vâng mình xin giới thiệu cách sử dụng UITextView để hiển thị text trong các file định dạng (*.rtf)
Luồng thao tác sẽ như sau
- Import rtf vào mainbundle
- từ file rtf create NSAttributeStrings
- Assign vào property attributedText của UITextView
Import rtf vào mainbundle
Như ở ví dụ của mình mình sử dụng file Terms.rtf để import vào main bundle
Từ file rtf create NSAttributeStrings
Ở file code dưới đây mình đã tạo method getTermAttributeString. và trong đó tạo 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 } }
Mình sẽ giải thích các bước trong đoạn code trên
if let url = Bundle.main.url(forResource: "Terms", withExtension: "rtf")
Ta sử dụng hàm Bundle.main.url để bắt URL của file trong main bundle.
try NSAttributedString(data: terms, options: [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.rtf], documentAttributes: nil)
Ở đây ta khởi tạo NSAttributedString và trong options ta chỉ định document type là [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.rtf] Đến đây là ta có thể tạo được NSAttributedString từ RichTextFormat
Assign vào property attributedText của UITextView
NSAttributedString đã được tạo chúng ta assign vào attributedText bằng đoạn code này
termsTextView.attributedText = try viewModel.getTermAttributeString()
Tham khảo
- Xcode 9.1 Swift 4, unable to compile with NSDocumentTypeDocumentAttribute if “if #available” is used
- ja.stackoverflow.com
- Objective C - How to create rtf from NSAttributedString
Nguồn bài dịch : Qiita