Как переключиться на фронтальную камеру при двойном касании (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()


        }


    }


}

person Moussdog    schedule 31.08.2015    source источник
comment
Ничего, я отредактировал. Я хочу добавить функцию, которая переключает вид камеры на переднюю камеру, когда я дважды нажимаю на экран, используя этот метод. @ЛиндсиСкотт   -  person Moussdog    schedule 31.08.2015
comment
проверьте ответ здесь   -  person Stepan Maksymov    schedule 01.11.2016


Ответы (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, может быть, вы можете преобразовать его в быстрый в соответствии с вашими потребностями.

person Wolverine    schedule 31.08.2015
comment
Спасибо, но я пытался преобразовать это в быстрое, но это не работает :( @Krupanshu - person Moussdog; 31.08.2015