首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从iOS Swift的框架中剔除摄像机控制器?

如何从iOS Swift的框架中剔除摄像机控制器?
EN

Stack Overflow用户
提问于 2019-12-09 10:30:43
回答 1查看 1.2K关注 0票数 0

我已经在框架内实现了视觉文档扫描仪。当摄像机视图控制器被调用并记录下来时。当点击保存按钮时,它应该被关闭并返回到viewController。

下面是框架内部的代码:

代码语言:javascript
复制
      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
    }

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

代码语言:javascript
复制
 @IBAction func btnAction(_ sender: Any) {
    A8Scan(self).showScanner()
    p()
}

我的问题是,当点击保存按钮,它应该取消相机控制器(VNDocumentCameraViewController),并返回到示例应用程序。但是,在我的情况下,它不会回来。

任何帮助,非常感谢.

EN

回答 1

Stack Overflow用户

发布于 2019-12-09 10:39:21

你把它作为一个孩子加在这里

代码语言:javascript
复制
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

代码语言:javascript
复制
scannerViewController.removeFromParent()
scannerViewController.view.removeFromSuperView()

代码语言:javascript
复制
private func createTaskController(){ 
    let scannerViewController = VNDocumentCameraViewController()
    scannerViewController.delegate = self  
    self.clientView?.present(scannerViewController,animated:true,completion:nil)
}

解除

代码语言:javascript
复制
controller.dismiss(animated: true)

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

代码语言:javascript
复制
let newImage = compressedImage(originalImage)
self.clientView?.sendImage(newImage)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59246921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档