如何在swift代码的Ui文本视图中上载RTF文件

如何在swift代码的Ui文本视图中上载RTF文件,swift,xcode6,uitextview,rtf,Swift,Xcode6,Uitextview,Rtf,如何在UITextView中加载RTF文件?假设您在应用程序中包含一个名为rtfdoc.RTF的文件,这将帮助您开始: let rtf = NSBundle.mainBundle().URLForResource("rtfdoc", withExtension: "rtf", subdirectory: nil, localization: nil) let attributedString = NSAttributedString(fileURL: rtf, options: [NSDocu

如何在UITextView中加载RTF文件?

假设您在应用程序中包含一个名为
rtfdoc.RTF的文件,这将帮助您开始:

let rtf = NSBundle.mainBundle().URLForResource("rtfdoc", withExtension: "rtf", subdirectory: nil, localization: nil)

let attributedString = NSAttributedString(fileURL: rtf, options: [NSDocumentTypeDocumentAttribute:NSRTFTextDocumentType], documentAttributes: nil, error: nil)

let textView = UITextView(frame: CGRectMake(20,20,self.view.frame.size.width-40,self.view.frame.size.height-40))

textView.attributedText = attributedString

self.view.addSubview(textView)
编辑:故事板版本

按要求填写完整代码。这假设您已经从故事板连接了一个插座

import UIKit
import Foundation

class ViewController: UIViewController {

    @IBOutlet var textView: UITextView!
    override func viewDidLoad() {
        super.viewDidLoad()
        if let rtf = NSBundle.mainBundle().URLForResource("rtfdoc", withExtension: "rtf", subdirectory: nil, localization: nil) {

            let attributedString = NSAttributedString(fileURL: rtf, options: [NSDocumentTypeDocumentAttribute:NSRTFTextDocumentType], documentAttributes: nil, error: nil)
            textView.attributedText = attributedString
            textView.editable = false
        }


    }

}

注意:文本不可编辑,但仍可选择。

假设您的应用程序中包含一个名为
rtfdoc.rtf的文件,这将帮助您开始:

let rtf = NSBundle.mainBundle().URLForResource("rtfdoc", withExtension: "rtf", subdirectory: nil, localization: nil)

let attributedString = NSAttributedString(fileURL: rtf, options: [NSDocumentTypeDocumentAttribute:NSRTFTextDocumentType], documentAttributes: nil, error: nil)

let textView = UITextView(frame: CGRectMake(20,20,self.view.frame.size.width-40,self.view.frame.size.height-40))

textView.attributedText = attributedString

self.view.addSubview(textView)
编辑:故事板版本

按要求填写完整代码。这假设您已经从故事板连接了一个插座

import UIKit
import Foundation

class ViewController: UIViewController {

    @IBOutlet var textView: UITextView!
    override func viewDidLoad() {
        super.viewDidLoad()
        if let rtf = NSBundle.mainBundle().URLForResource("rtfdoc", withExtension: "rtf", subdirectory: nil, localization: nil) {

            let attributedString = NSAttributedString(fileURL: rtf, options: [NSDocumentTypeDocumentAttribute:NSRTFTextDocumentType], documentAttributes: nil, error: nil)
            textView.attributedText = attributedString
            textView.editable = false
        }


    }

}

注意:文本不可编辑,但仍可选择。

对于iOS9,上述
NSAttributed
字符串将给出错误信息。您可以尝试以下代码进行相同操作:

do{
    let attrString =
    try NSMutableAttributedString(URL: rtfPath, options: [NSDocumentTypeDocumentAttribute:NSRTFTextDocumentType], documentAttributes: nil)
                textView.attributedText = attrString 
}catch{}

对于iOS9,上面的
NSAttributed
字符串将给出错误信息。您可以尝试以下代码进行相同操作:

do{
    let attrString =
    try NSMutableAttributedString(URL: rtfPath, options: [NSDocumentTypeDocumentAttribute:NSRTFTextDocumentType], documentAttributes: nil)
                textView.attributedText = attrString 
}catch{}

非常感谢,我已经找了很多天了。你是完美的。只有一个问题,当我写这段代码时,它会在我的应用程序中显示RTF文件文本的整个页面。我要半页。我的UI文本视图是带有约束的半页。你知道吗?我希望我解释得很好:)对不起,我该怎么做才是不可食的?如果你正在从故事板等连接文本视图,你只需要一个插座。这是一种编程方法。若要使不可编辑,请将“可编辑”属性设置为false。删除let textView行和self.view.addSubview()行。将textView替换为您的插座名称您可以编写Remove let textView line和self.view.addSubview()line的示例代码吗。将textView替换为您的门店名称–我尝试过,但出现了错误。真的谢谢…非常感谢,我已经找了很多天了。你是完美的。只有一个问题,当我写这段代码时,它会在我的应用程序中显示RTF文件文本的整个页面。我要半页。我的UI文本视图是带有约束的半页。你知道吗?我希望我解释得很好:)对不起,我该怎么做才是不可食的?如果你正在从故事板等连接文本视图,你只需要一个插座。这是一种编程方法。若要使不可编辑,请将“可编辑”属性设置为false。删除let textView行和self.view.addSubview()行。将textView替换为您的插座名称您可以编写Remove let textView line和self.view.addSubview()line的示例代码吗。将textView替换为您的门店名称–我尝试过,但出现了错误。真的谢谢。。