
@IBAction func dIDtouchSwitchbutton(sender: UIbutton) { let camera = getDevice(.Front) let cameraBack = getDevice(.Back) do { input = try AVCaptureDeviceinput(device: camera) } catch let error as NSError { print(error) input = nil } if(captureSession?.canAddinput(input) == true){ captureSession?.addinput(input) stillimageOutput?.outputSettings = [AVVIDeoCodecKey : AVVIDeoCodecJPEG] if(captureSession?.canAddOutput(stillimageOutput) == true){ captureSession?.addOutput(stillimageOutput) prevIEwLayer = AVCaptureVIDeoPrevIEwLayer(session: captureSession) prevIEwLayer?.frame = cameraview.bounds cameraview.layer.addSublayer(prevIEwLayer!) captureSession?.startRunning() } } }
解决方法func switchCamera(_ sender: UIbutton) { if let session = AVCaptureSession() { let currentCamerainput: AVCaptureinput = session.inputs[0] session.removeinput(currentCamerainput) var newCamera: AVCaptureDevice newCamera = AVCaptureDevice.default(for: AVMediaType.vIDeo)! if (currentCamerainput as! AVCaptureDeviceinput).device.position == .back { UIVIEw.Transition(with: self.cameraview,duration: 0.5,options: .TransitionFlipFromleft,animations: { newCamera = self.cameraWithposition(.front)! },completion: nil) } else { UIVIEw.Transition(with: self.cameraview,options: .TransitionFlipFromright,animations: { newCamera = self.cameraWithposition(.back)! },completion: nil) } do { try self.captureSession?.addinput(AVCaptureDeviceinput(device: newCamera)) } catch { print("error: \(error.localizedDescription)") } }}func cameraWithposition(_ position: AVCaptureDevice.position) -> AVCaptureDevice? { let deviceDescoverySession = AVCaptureDevice.discoverySession.init(deviceTypes: [AVCaptureDevice.DeviceType.builtInWIDeAngleCamera],mediaType: AVMediaType.vIDeo,position: AVCaptureDevice.position.unspecifIEd) for device in deviceDescoverySession.devices { if device.position == position { return device } } return nil} 总结 以上是内存溢出为你收集整理的在Swift中使用按钮切换相机全部内容,希望文章能够帮你解决在Swift中使用按钮切换相机所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)