如何在Swift 2中切换到前置摄像头?

我有我的ViewDidAppear所有这些代码

captureSession = AVCaptureSession() // let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) var captureDevice:AVCaptureDevice! = nil if (camera == CameraType.Front) { let videoDevices = AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo) for device in videoDevices{ let device = device as! AVCaptureDevice if device.position == AVCaptureDevicePosition.Front { captureDevice = device break } } } else { captureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) } do { let input = try? AVCaptureDeviceInput(device: captureDevice) if (captureSession?.canAddInput(input) != nil){ captureSession?.addInput(input) stillImageOutput = AVCaptureStillImageOutput() stillImageOutput?.outputSettings = [AVVideoCodecKey : AVVideoCodecJPEG] if (captureSession?.canAddOutput(stillImageOutput) != nil){ captureSession?.addOutput(stillImageOutput) previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.Portrait cameraView.layer.addSublayer(previewLayer!) captureSession?.startRunning() } cameraView.bringSubviewToFront(actionView) previewImageView.bringSubviewToFront(actionView) self.previewImageView.hidden = true } } 

Xcode 8.2.1•Swift 3.0.2

 captureDevice = (AVCaptureDevice.devices() as? [AVCaptureDevice])? .filter({ $0.hasMediaType(AVMediaTypeVideo) && $0.position == .front}).first 

Swift 2

 captureDevice = (AVCaptureDevice.devices() .filter{ $0.hasMediaType(AVMediaTypeVideo) && $0.position == .Front}) .first as? AVCaptureDevice 

你试过了吗 :

 let device = AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo) .map { $0 as! AVCaptureDevice } .filter { $0.position == .Front} .first!