【问题标题】:How to implement camera in swift如何快速实现相机
【发布时间】:2018-04-26 23:26:37
【问题描述】:

当我按下相机按钮时,我的应用程序总是崩溃。当我按下相机按钮时,我试图让相机出现在我的屏幕上。

@IBAction func ACPressed(_ sender: Any) {
    let picker = UIImagePickerController()

    picker.delegate = self
    picker.sourceType = .camera

    present(picker, animated: true, completion: nil)
}

private func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String :AnyObject] ){        
    camera.image = info [UIImagePickerControllerOriginalImage] as? UIImage; dismiss(animated: true, completion: nil)
}

【问题讨论】:

  • 当您的应用程序崩溃时,您是否会收到堆栈跟踪或其他可以通过编辑添加到问题中的错误消息?

标签: swift xcode uiimagepickercontroller


【解决方案1】:

这可能是模拟器问题。如果您想添加代码来处理这种情况,您可以执行以下操作:

    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) {
        let imagePicker = UIImagePickerController()
        imagePicker.delegate = self
        imagePicker.sourceType = UIImagePickerControllerSourceType.camera
        imagePicker.allowsEditing = false
        self.present(imagePicker, animated: true, completion: nil)
    }

通过将其包装在“isSourceTypeAvailable”中,它将避免崩溃。您可以在其中添加一条 else 语句并显示一条通知该问题的警报消息。

【讨论】:

    【解决方案2】:

    请勿使用模拟器测试相机。使用真实设备。 您将看到异常的另一种方式:

    *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“源类型 1 不可用”

    class ViewController:UIViewController, UIImagePickerControllerDelegate {
    
        private var imagePicker    : UIImagePickerController!
        private var photo: UIImage?
    
        @IBAction func ACPressed(_ sender: Any) {
            imagePicker            = UIImagePickerController()
            imagePicker.delegate   = self
            imagePicker.sourceType = .camera
            present(imagePicker, animated: true, completion: nil)
        }
    
        func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
            imagePicker.dismiss(animated: true, completion: nil)
            photo = info[UIImagePickerControllerOriginalImage] as? UIImage
    
        }
    }
    

    不要忘记在您的 Info.plist

    我不知道为什么我的答案被否决了,但在真实设备上尝试此代码,您会发现代码完美运行!

    【讨论】:

    • 两个错误:Cannot assign value of type 'ViewController' to type '(UIImagePickerControllerDelegate & UINavigationControllerDelegate)?'photo = info[UIImagePickerControllerOriginalImage] as? UIImage...也许这就是问题所在?
    猜你喜欢
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多