UITextView未显示RTF文件

时间:2015-11-12 19:45:07

标签: ios swift uitextview rtf resourcebundle

我正在制作适用于iOS 9.1的应用程序(使用Xcode 7.1和Swift 2.0),其中包含UITextView,用于显示来自rtf资源文件的格式化文本。我在视图控制器的viewDidLoad()函数中调用以下函数来加载文本:

func loadTutorialText() {
    if let rtfPath = NSBundle.mainBundle().URLForResource("TutorialText", withExtension: "rtf") {
        do {
            let attributedStringWithRtf = try NSAttributedString(URL: rtfPath, options: [NSDocumentTypeDocumentAttribute : NSRTFTextDocumentType], documentAttributes: nil)
            self.textView.attributedText = attributedStringWithRtf
        } catch {
            print("Error loading text")
        }
    }
}

当我运行应用程序时,会加载rtf资源文件中的文本,但所有内容都显示为纯文本。以下是我正在使用的测试rtf文件的示例:

  

示例标题

     

文本文本文本文本文本文本文本文本文本文本文本文本文本   文本文本文本文本文本文本文本文本文本文本文本文本文本   文本文本文本文本文本文本文本文本文本文本文本文本文本   文本文本文本文本文本文本文本文本文本文本文本文本文本   文本文本文本。

     

示例标题

     

文本文本文本文本文本文本文本文本文本文本文本文本文本   文本文本文本文本文本文本文本文本文本文本文本文本文本   文本文本文本文本文本文本文本文本文本文本文本文本文本   文本文本文本文本文本文本文本文本文本文本文本文本文本   文本文本文本。

     

项目符号列表

     
      
  • 第1项
  •   
  • 第2项
  •   
  • 第3项
  •   

我需要为UITextView设置一些属性来正确显示吗?

3 个答案:

答案 0 :(得分:5)

不要将documentAttributes设置为nil,而应将其读入变量:

var d : NSDictionary? = nil
let attributedStringWithRtf = try NSAttributedString(
    URL: rtfPath, 
    options: [NSDocumentTypeDocumentAttribute : NSRTFTextDocumentType], 
    documentAttributes: &d)

编辑您的RTF文件在我的计算机上正常运行:

enter image description here

从字面上看,该应用中唯一的代码是:

class ViewController: UIViewController {
    @IBOutlet weak var tv: UITextView!
    override func viewDidLoad() {
        super.viewDidLoad()
        let rtfPath = NSBundle.mainBundle().URLForResource("TutorialText", withExtension: "rtf")!
        var d : NSDictionary? = nil
        let attributedStringWithRtf = try! NSAttributedString(
            URL: rtfPath,
            options: [NSDocumentTypeDocumentAttribute : NSRTFTextDocumentType],
            documentAttributes: &d)
        self.tv.attributedText = attributedStringWithRtf
    }
}

我必须建议,如果那不是您所看到的,那么您有其他代码,而您还没有告诉我们这些代码的来源和弄乱了。

答案 1 :(得分:0)

删除添加到“界面”构建器中“字体”属性的其他“大小”类的所有字体大小设置,并消除原因。

答案 2 :(得分:0)

SWIFT 4

[NSDocumentTypeDocumentAttribute:NSRTFTextDocumentType]

别急着为我工作

这是我的解决方案:

let attributedStringWithRtf:NSAttributedString = try NSAttributedString(
                    url: rtfPath,
                    options: [.documentType: NSAttributedString.DocumentType.rtf],
                    documentAttributes: nil
                )
                self.textView.attributedText = attributedStringWithRtf