如何在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!