如何在 UIDocumentInteractionController 中显示铅笔选项?
How to show pencil option in UIDocumentInteractionController?
我正在尝试使用 UIViewControllerRepresentable 在 swiftUI 中使用 UIDocumentInteractionController。我的代码运行良好,但我想向我的应用程序添加铅笔功能。我希望能够使用铅笔或手指绘制图像。当您在文件应用程序中打开图像时,您会在右上角看到那个铅笔按钮。我正在使用 UIDocumentInteractionController,它只在顶部提供完成按钮和共享按钮。我想知道文件应用程序是否使用相同的东西来打开图像。如果是,如何启用该铅笔按钮?如果不是,那么应用程序打开图像所用的文件是什么?
谢谢!
UIViewControllerRepresentable
struct UIDocumentInteractionControllerWrapper: UIViewControllerRepresentable {
private var isActive: Binding<Bool>
private let docController: UIDocumentInteractionController
private let viewController = UIViewController()
internal init(isActive: Binding<Bool>, url: URL) {
self.isActive = isActive
self.docController = UIDocumentInteractionController(url: url)
}
func makeUIViewController(context: Context) -> UIViewController {
return viewController
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
if self.isActive.wrappedValue && docController.delegate == nil {
docController.delegate = context.coordinator
self.docController.presentPreview(animated: true)
}
}
func makeCoordinator() -> Coordinator {
return Coordinator(self)
}
final class Coordinator: NSObject,UIDocumentInteractionControllerDelegate {
let parent: UIDocumentInteractionControllerWrapper
init(_ parent: UIDocumentInteractionControllerWrapper) {
self.parent = parent
}
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
return parent.viewController
}
func documentInteractionControllerDidEndPreview(_ controller: UIDocumentInteractionController) {
controller.delegate = nil
parent.isActive.wrappedValue = false
}
}
}
我的应用程序
Apple 的文件应用程序
第二个截图是QLPreviewController
,
请参阅 test module here 了解如何集成它。
另外 this my post 关于与 UINavigationController
的集成可能会有帮助
和
我正在尝试使用 UIViewControllerRepresentable 在 swiftUI 中使用 UIDocumentInteractionController。我的代码运行良好,但我想向我的应用程序添加铅笔功能。我希望能够使用铅笔或手指绘制图像。当您在文件应用程序中打开图像时,您会在右上角看到那个铅笔按钮。我正在使用 UIDocumentInteractionController,它只在顶部提供完成按钮和共享按钮。我想知道文件应用程序是否使用相同的东西来打开图像。如果是,如何启用该铅笔按钮?如果不是,那么应用程序打开图像所用的文件是什么?
谢谢!
UIViewControllerRepresentable
struct UIDocumentInteractionControllerWrapper: UIViewControllerRepresentable {
private var isActive: Binding<Bool>
private let docController: UIDocumentInteractionController
private let viewController = UIViewController()
internal init(isActive: Binding<Bool>, url: URL) {
self.isActive = isActive
self.docController = UIDocumentInteractionController(url: url)
}
func makeUIViewController(context: Context) -> UIViewController {
return viewController
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
if self.isActive.wrappedValue && docController.delegate == nil {
docController.delegate = context.coordinator
self.docController.presentPreview(animated: true)
}
}
func makeCoordinator() -> Coordinator {
return Coordinator(self)
}
final class Coordinator: NSObject,UIDocumentInteractionControllerDelegate {
let parent: UIDocumentInteractionControllerWrapper
init(_ parent: UIDocumentInteractionControllerWrapper) {
self.parent = parent
}
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
return parent.viewController
}
func documentInteractionControllerDidEndPreview(_ controller: UIDocumentInteractionController) {
controller.delegate = nil
parent.isActive.wrappedValue = false
}
}
}
我的应用程序
Apple 的文件应用程序
第二个截图是QLPreviewController
,
请参阅 test module here 了解如何集成它。
另外 this my post 关于与 UINavigationController
的集成可能会有帮助
和