当应用程序处于活动状态时,一切都可以正常运行,而有时当我将应用程序移动到背景(按住主页按钮)而不是返回时,预览屏幕冻结/卡住.
我使用vIEwWillAppear和vIEwDIDAppear进行设置.
这是我如何设置一切:
var backCamera = AVCaptureDevice.devicesWithMediaType(AVMediaTypeVIDeo) var global_device : AVCaptureDevice! var captureSession: AVCaptureSession?overrIDe func vIEwWillAppear(animated: Bool) {super.vIEwWillAppear(animated)captureSession = AVCaptureSession() captureSession!.sessionPreset = AVCaptureSessionPresetPhoto Correctposition = AVCaptureDeviceposition.Back for device in backCamera { if device.position == AVCaptureDeviceposition.Back { global_device = device as! AVCaptureDevice Correctposition = AVCaptureDeviceposition.Back break } } configureCamera() var error: NSError? var input = AVCaptureDeviceinput(device: global_device,error: &error) if error == nil && captureSession!.canAddinput(input) { captureSession!.addinput(input) stillimageOutput = AVCaptureStillimageOutput() stillimageOutput!.outputSettings = [AVVIDeoCodecKey: AVVIDeoCodecJPEG] if captureSession!.canAddOutput(stillimageOutput) { captureSession!.addOutput(stillimageOutput) prevIEwLayer = AVCaptureVIDeoPrevIEwLayer(session: captureSession) var bounds:CGRect = camera_PrevIEw.layer.bounds prevIEwLayer?.vIDeoGravity = AVLayerVIDeoGravityResizeAspectFill prevIEwLayer?.bounds = bounds prevIEwLayer?.position = CGPointMake(CGRectGetMIDX(bounds),CGRectGetMIDY(bounds)) camera_PrevIEw.layer.addSublayer(prevIEwLayer) self.vIEw.bringSubvIEwToFront(camera_PrevIEw) self.vIEw.bringSubvIEwToFront(nan_vIEw) captureSession!.startRunning() } }
VIEwDIDAppear:
var prevIEwLayer: AVCaptureVIDeoPrevIEwLayer?overrIDe func vIEwDIDAppear(animated: Bool) { super.vIEwDIDAppear(animated) prevIEwLayer!.frame = camera_PrevIEw.bounds }解决方法 投资回报率,
我认为你的问题是你正在做所有的会话设置,在vIEwWillAppear中.让我们说,captureSession和prevIEwLayer都被分配并且正常工作.现在,你把应用程序放在后台并带回来.
您将立即尝试创建一个新的captureSession和一个新的prevIEwLayer.我怀疑旧的和新的都在纠结.
在Apple AVCam示例中,他们在vIEwDIDLoad中进行设置.这样做只能做一次.
您应该将所有设置的东西移动到一个方法,然后从vIEwDIDLoad调用该方法.
法案
总结以上是内存溢出为你收集整理的ios – AVCaptureVideoPreviewLayer(相机预览)在移动到背景和背面后冻结/卡住全部内容,希望文章能够帮你解决ios – AVCaptureVideoPreviewLayer(相机预览)在移动到背景和背面后冻结/卡住所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)