SwiftUI中WebView加载RTFD文件仅显示文字不显示图片问题
解决RTFD文件在WKWebView中图片不显示的问题
问题出在你对RTFD文件的处理和加载方式上:
- RTFD本质是文件夹包,内部包含RTF文本文件和嵌入的图片资源,你把它压缩成zip后破坏了内部资源引用结构,导致WebView只能读取文本、找不到图片。
- 用普通的
URLRequest加载无法正确处理RTFD包内的资源访问权限。
修正步骤:
重新添加RTFD文件到项目
- 不要压缩
doc.rtfd,直接把整个doc.rtfd文件夹拖进Xcode - 拖入时勾选「Copy items if needed」,并确保关联到你的目标target
- 不要压缩
修改代码中的URL获取和加载逻辑
替换原WebView结构体的代码,改用loadFileURL加载RTFD,同时正确获取包的URL:
import SwiftUI import WebKit struct WebView: UIViewRepresentable { func makeUIView(context: Context) -> WKWebView { return WKWebView() } func updateUIView(_ webView: WKWebView, context: Context) { guard let rtfdURL = Bundle.main.url(forResource: "doc", withExtension: "rtfd") else { print("找不到RTFD文件") return } // 允许WebView访问RTFD包所在目录的资源 webView.loadFileURL(rtfdURL, allowingReadAccessTo: rtfdURL.deletingLastPathComponent()) } }
ExampleWebView的代码可以保持不变。
这样修改后,WebView就能正确解析RTFD包里的文本和图片资源了。
内容的提问来源于stack exchange,提问作者joan
相关产品推荐
相关产品推荐

