我正在制作适用于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
设置一些属性来正确显示吗?
答案 0 :(得分:5)
不要将documentAttributes
设置为nil
,而应将其读入变量:
var d : NSDictionary? = nil
let attributedStringWithRtf = try NSAttributedString(
URL: rtfPath,
options: [NSDocumentTypeDocumentAttribute : NSRTFTextDocumentType],
documentAttributes: &d)
编辑您的RTF文件在我的计算机上正常运行:
从字面上看,该应用中唯一的代码是:
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