2016-08-21 7 views
3

これは、カメラを背面から前面に切り替えるように見えますが、私は「if」ステートメントを思いついています。任意のアイデアやアドバイス?スウィフトのボタンでカメラを切り替える

@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() 
     } 
    } 

}

答えて

0

まずカメラの種類を確認するためにenumを作成します。あなたのdidTouchSwitchButton機能に続いて

var currentDirection: CameraDirection = .front//or initial direction 

enum CameraDirection { 
    case .front 
    case .back 
} 

は、次に列挙のための変数を作成:

if (currentDirection == .front) { 
    currentDirection = .back 
} else { 
    currentDirection = .front 
} 
reload() 

私はreloadという関数を呼び出したことがわかります。作成する:

func reload() { 
    let camera = getDevice(.Front) 
    let cameraBack = getDevice(.Back) 


    do { 
     if currentDirection == .front { 
      input = try AVCaptureDeviceInput(device: camera) 
     } else { 
      input = try AVCaptureDeviceInput(device: cameraBack) 
     } 
    } catch let error as NSError { 
     print(error) 
     input = nil 
    } 
    //rest of code 
} 
+0

ありがとうございます!私はまだ.front .backを定義する問題が少しあります。これらの値は、それ自身では機能しないようです。 – craycades

+0

私はあなたがgetDeviceのためにそれを使っているからだと思います。それを前方または後方またはそれに近い名前に変更してみてください – penatheboss

+0

すべてがうまくいきますが、それでもカメラを切り替えることはできないようです。 – craycades

関連する問題