[Swift4] Sử dụng UITextView để hiển thị text trong file định dạng RichTextFile(rtf)
Bài đăng này đã không được cập nhật trong 6 năm
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ủaUITextView
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
All rights reserved