2015-08-12 36 views

risposta

14

Rilevare e applicare a viewWillLayoutSubviews.

Ecco come:

override func viewWillLayoutSubviews() { 

    let orientation: UIDeviceOrientation = UIDevice.currentDevice().orientation 
    print(orientation) 

    switch (orientation) { 
    case .Portrait: 
     previewLayer?.connection.videoOrientation = .Portrait 
    case .LandscapeRight: 
     previewLayer?.connection.videoOrientation = .LandscapeLeft 
    case .LandscapeLeft: 
     previewLayer?.connection.videoOrientation = .LandscapeRight 
    default: 
     previewLayer?.connection.videoOrientation = .Portrait 
    } 
} 
+0

Grazie signore ... mi hai salvato la giornata ... Aggiungere questa riga prima della pausa aiuterà previewLayer.frame = auto .view.bounds –

+1

Questo deve essere aggiornato per l'ultimo Swift. Prendi nota del fatto che videoOrientation viene capovolto dall'orientamento del dispositivo per le modalità paesaggio. –

0

aggiornamento per Swift 3

override func viewWillLayoutSubviews() { 

    let orientation: UIDeviceOrientation = UIDevice.current.orientation 
    print(orientation) 

    switch (orientation) { 
    case .portrait: 
     videoPreviewLayer?.connection.videoOrientation = .portrait 
    case .landscapeRight: 
     videoPreviewLayer?.connection.videoOrientation = .landscapeLeft 
    case .landscapeLeft: 
     videoPreviewLayer?.connection.videoOrientation = .landscapeRight 
    case .portraitUpsideDown: 
      videoPreviewLayer?.connection.videoOrientation = .portraitUpsideDown 
    default: 
     videoPreviewLayer?.connection.videoOrientation = .portraitUpsideDown 
    } 
}