HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 主视图崩溃时的子视图将AVFoundation中的图像分配给UIImageView时大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经创建了一个自定义AVFoundation摄像头并作为子视图加载到另一个视图中使用@IBDesignable,在拍摄图像后我想将其分配给UI ImageView,但是当按下按钮时,自定义摄像头视图(UIView)崩溃并向上移动在屏幕上,而不是将其分配给UIImageView,这发生在自定义摄像头视图加载开始时,然后当我再次加载自定义摄像头视图时,它会将图像分配给UIImageView.

捕获图像方法

@IBACtion func captureImage(sender: AnyObject) {
        if let stillOutput = self.captureImageOutput {
            // we do this on another thread so that we don't hang the UI
            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)) {
                //find the video connection
                var videoConnection : AVCaptureConnection?
                for connecton in stillOutput.connections {
                    //find a matching input port
                    for port in connecton.inputPorts!{
                        if port.mediaType == AVMediaTypeVideo {
                            videoConnection = connecton as? AVCaptureConnection
                            break //for port
                        }
                    }

                    if videoConnection  != nil {
                        break// for connections
                    }
                }
                if videoConnection  != nil {
                    stillOutput.captureStillImageAsynchronouslyFromConnection(videoConnection){
                        (imageSampleBuffer : CMSampleBuffer!,_) in

                        let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageSampleBuffer)
                        let pickedImage: UIImage = UIImage(data: imageData,scale: 1.0)!

                        dispatch_async(dispatch_get_main_queue(),{
                            self.capturePhoto.image = pickedImage
                        })
                    }
                }
            }
        }

    }

我也尝试过dispatch_sync并且在UIImageView中没有任何加载,但屏幕不会崩溃.

dispatch_sync(dispatch_get_main_queue(),{
      self.capturePhoto.image = pickedImage
})

解决方法

我只是测试了它,这对我有用(Swift 2.0)
override func viewDidLoad() {
    super.viewDidLoad()
    imageView = UIImageView(frame: self.view.framE)
    self.view.addSubview(imageView)
}

func takeImage() {

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)) {

        guard let videoConnection = self.stillImageOutput.connectionWithMediaType(AVMediaTypeVideo) else { return }
        guard videoConnection.enabled else { return }

        self.stillImageOutput.captureStillImageAsynchronouslyFromConnection(videoConnection) { (buffer: CMSampleBuffer!,error: NSError!) -> Void in

            let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer)
            let image: UIImage = UIImage(data: imageData,scale: 1.0)!

            dispatch_async(dispatch_get_main_queue(),{
                self.imageView.image = image
                print("picture taken")
            })
        }
    }

}

图像成功拍摄并添加到ViewController.如果这对您不起作用,也许您可​​以在设置上解释更多,以便我可以尝试重现错误/崩溃.

大佬总结

以上是大佬教程为你收集整理的ios – 主视图崩溃时的子视图将AVFoundation中的图像分配给UIImageView时全部内容,希望文章能够帮你解决ios – 主视图崩溃时的子视图将AVFoundation中的图像分配给UIImageView时所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。