2016-07-26 3 views
1

Я сделал приложение для камеры. В портретном режиме это выглядит так: enter image description hereКамера в ландшафтном режиме не в полноэкранном режиме

но в ландшафтном режиме это не полноэкранный режим, и что может быть причиной?

enter image description here

Вот функция takePhoto:

@IBAction func takePhoto(sender: AnyObject) { 
     var imageViewBackground: UIImageView! 
     self.fullScreenView.hidden = false 
     self.recordButton.enabled = false 
     self.takephoto.enabled = false 
     self.recordButton.hidden = true 
     self.takephoto.hidden = true 

     session.startRunning() 

     // add the AVCaptureVideoPreviewLayer to the view and sets the view in fullscreen 
     fullScreenView.frame = view.bounds 
     fullScreenView.layer.addSublayer(videoPreviewLayer) 

     // add action to fullScreenView 
     gestureFullScreenView = UITapGestureRecognizer(target: self, action: #selector(ViewController.takePhoto(_:))) 
     self.fullScreenView.addGestureRecognizer(gestureFullScreenView) 

     // add action to myView 
     gestureView = UITapGestureRecognizer(target: self, action: #selector(ViewController.setFrontpage(_:))) 
     self.view.addGestureRecognizer(gestureView) 

     if (preview == true) { 
      if let videoConnection = stillImageOutput!.connectionWithMediaType(AVMediaTypeVideo) { 
       // code for photo capture goes here... 

       stillImageOutput?.captureStillImageAsynchronouslyFromConnection(videoConnection, completionHandler: { (sampleBuffer, error) -> Void in 
        // process the image data (sampleBuffer) here to get an image file we can put in our view 

        if (sampleBuffer != nil) { 
         let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer) 
         let dataProvider = CGDataProviderCreateWithCFData(imageData) 
         let cgImageRef = CGImageCreateWithJPEGDataProvider(dataProvider, nil, true, CGColorRenderingIntent.RenderingIntentDefault) 
         let image = UIImage(CGImage: cgImageRef!, scale: 1.0, orientation: UIImageOrientation.Right) 

         self.fullScreenView.hidden = true 
         self.fullScreenView.gestureRecognizers?.forEach(self.fullScreenView.removeGestureRecognizer) 
         self.session.stopRunning() 

         // save image to the library 
         UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) 

         imageViewBackground = UIImageView(frame: CGRectMake(0, 0, self.width, self.height)) 
         imageViewBackground.image = image 
         imageViewBackground.tag = self.key 

         self.view.addSubview(imageViewBackground) 
        } 
       }) 
      } 
     } 
     else { 
      preview = true 
     } 
    } 
+0

PLS обновите вопрос соответствующим кодом. Как вы запускаете камеру? –

+0

Я разместил метод takephoto – mafioso

ответ

1

При повороте устройства, вид подогнаны в соответствии с ориентацией устройства. В вашем случае, когда вы добавляете videoPreviewLayer, он не будет правильно изменен. Вы должны сделать это самостоятельно.

Измените рамку videoPreviewLayer, когда устройство повернуто. Или снова вызовите метод, когда вы вращаете устройство.

+0

И у вас есть идея, где установить кадр видеообзора? – mafioso