我正在寻找一个在SwiftUI应用程序中查看和编辑PDF文件的解决方案。最重要的是,应该赋予它签署PDF/使用它的功能。有办法这样做吗?我是Swift开发的新手,所以我同时学习SwiftUI / UIKit。因此,我很难用UIKit编写SwiftUI代码的包装器。“我的代码”可以显示PDF,但到目前为止无法编辑:
import Foundation
import SwiftUI
import UIKit
import PDFKit
struct PDFKitView: View {
var url: URL
var body: some View {
PDFKitRepresentedView(url)
}
}
struct PDFKitRepresentedView: UIViewRepresentable {
let url: URL
init(_ url: URL) {
self.url = url
}
func makeUIView(context: UIViewRepresentableContext<PDFKitRepresentedView>) -> PDFKitRepresentedView.UIViewType {
let pdfView = PDFView()
pdfView.document = PDFDocument(url: self.url)
pdfView.autoScales = true
return pdfView
}
func updateUIView(_ uiView: UIView, context: UIViewRepresentableContext<PDFKitRepresentedView>) {
// Update the view.
}
}发布于 2021-03-23 13:15:45
我已经找到解决办法了。我使用了PDFFreedraw回购从ClassicalDude在GitHub上。这是一个实现良好的开源解决方案。那时,我能够为像这样的快速UI编写一个包装器。
https://github.com/ClassicalDude/pdfView-Freedraw
import Foundation
import SwiftUI
import UIKit
import PDFKit
struct PDFKitEditorView: View {
var url: URL
var body: some View {
PDFKitEditorRepresentedView(url)
.ignoresSafeArea(.all)
.navigationBarHidden(true)
}
}
struct PDFKitEditorRepresentedView: UIViewControllerRepresentable {
let url: URL
init(_ url: URL) {
self.url = url
}
func makeUIViewController(context: Context) -> UIViewController {
let storyboard = UIStoryboard(name: "MainPDFView", bundle: Bundle.main)
let controller = storyboard.instantiateViewController(withIdentifier: "PDFViewControllerID") as? PDFViewController
controller!.url = self.url
return controller!
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
}
}https://stackoverflow.com/questions/66490129
复制相似问题