Как переключиться на фронтальную камеру при двойном нажатии ( SWIFT)
Сначала я хочу извиниться за мой примерный английский.
Я работаю над проектом для Iphone, используя Swift.
В моем проекте у меня есть 3 вида, в одном из которых я поместил вид камеры (задняя камера), как в меню Snapchat. когда я дважды нажимаю, я хочу переключиться на фронтальную камеру.
Я добавил в свой код Распознаватель жестов касанием, но я не знаю, как инициализировать в нем мою переднюю камеру.
Вот полный код. Если вам нужно больше информации, скажите мне! Спасибо.
import UIKit
import AVFoundation
class View2: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate{
var captureSession : AVCaptureSession?
var stillImageOutput : AVCaptureStillImageOutput?
var previewLayer : AVCaptureVideoPreviewLayer?
@IBAction func DoubleTap(sender: UITapGestureRecognizer) {
}
@IBOutlet var cameraView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
previewLayer?.frame = cameraView.bounds
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
captureSession = AVCaptureSession()
captureSession?.sessionPreset = AVCaptureSessionPreset1920x1080
// Déclaration Caméra frontale
let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
var error : NSError?
var input: AVCaptureDeviceInput!
do {
input = try AVCaptureDeviceInput(device: backCamera)
} catch let error1 as NSError {
error = error1
input = nil
}
if (error == nil && 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()
}
}
}
1 ответ
Может быть это поможет
- (AVCaptureDevice *)showFrontCamera {
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in devices) {
if ([device position] == AVCaptureDevicePositionFront) {
return device;
}
}
return nil;
}
Это функция, которая возвращает вид с передней камеры. При двойном щелчке вызвать эту функцию для переключения
AVCaptureDevice *device = [self showFrontCamera];
У меня есть код в Objective-C, может быть, вы можете преобразовать его в быстрый в соответствии с вашими потребностями.