gpt4 book ai didi

ios - 如何从 iOS Swift 中的框架中关闭相机 Controller ?

转载 作者:行者123 更新时间:2023-11-28 23:23:31 25 4
gpt4 key购买 nike

我在框架内实现了视觉文档扫描器。当调用相机 View Controller 并捕获文档时。当点击保存按钮时,它应该关闭并返回到 viewController。

框架内的代码如下:

      public func showScanner(){
self.createTaskController()
// let scannerViewController = VNDocumentCameraViewController()
// scannerViewController.delegate = self
// present(scannerViewController, animated: true)
print("Called Build")
}

private func createTaskController(){
let scannerViewController = VNDocumentCameraViewController()
scannerViewController.delegate = self
self.clientView?.addChild(scannerViewController)
self.clientView?.view.addSubview(scannerViewController.view)
scannerViewController.didMove(toParent: clientView)
scannerViewController.dismiss(animated: true)
}

public func imageFromFile(result: @escaping (_ image: UIImage?) -> Void){
//the image
if imageNew != nil {
result(imageNew)
}
else{
//callback nil so the app does not pause infinitely if
//the error != nil
result(nil)
}
}

public func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFinishWith scan: VNDocumentCameraScan) {
guard scan.pageCount >= 1 else {
controller.dismiss(animated: true)
return
}

let originalImage = scan.imageOfPage(at: 0)
let newImage = compressedImage(originalImage)
imageNew = newImage
print("new image::\(newImage.size)")
print("new imagei::\(newImage)")
controller.dismiss(animated: true)
}

public func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFailWithError error: Error) {
print(error)
controller.dismiss(animated: true)
}

public func documentCameraViewControllerDidCancel(_ controller: VNDocumentCameraViewController) {
controller.dismiss(animated: true)
}

func compressedImage(_ originalImage: UIImage) -> UIImage {
guard let imageData = originalImage.jpegData(compressionQuality: 1),

let reloadedImage = UIImage(data: imageData) else {
return originalImage
}
return reloadedImage
}

这是我在示例项目中调用框架的代码:

 @IBAction func btnAction(_ sender: Any) {
A8Scan(self).showScanner()
p()
}

我的问题是,当点击保存按钮时,它应该关闭相机 Controller (VNDocumentCameraViewController) 并返回到示例应用程序。但是,就我而言,它不会返回。

非常感谢任何帮助...

最佳答案

你在这里添加它作为 child

let scannerViewController = VNDocumentCameraViewController()
private func createTaskController(){
scannerViewController.delegate = self
self.clientView?.addChild(scannerViewController)
self.clientView?.view.addSubview(scannerViewController.view)
scannerViewController.didMove(toParent: clientView)
/// scannerViewController.dismiss(animated: true) remove this line
}

然后删除 do

scannerViewController.removeFromParent()
scannerViewController.view.removeFromSuperView()

private func createTaskController(){ 
let scannerViewController = VNDocumentCameraViewController()
scannerViewController.delegate = self
self.clientView?.present(scannerViewController,animated:true,completion:nil)
}

关闭

controller.dismiss(animated: true)

要发送图像,请在 clientView 中创建一个函数并调用它

let newImage = compressedImage(originalImage)
self.clientView?.sendImage(newImage)

关于ios - 如何从 iOS Swift 中的框架中关闭相机 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59246921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com