2016-07-26 24 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

請用相關代碼更新問題。你如何啓動相機? –

+0

我發佈了拍照方法 – mafioso

回答

1

當你旋轉設備,該意見得到一個基於設備的方向調整。在你的情況下,當你添加videoPreviewLayer時,它將不會正確調整大小。你必須自己做。

當設備旋轉時,更改videoPreviewLayer的框架。或者在您旋轉設備時再次調用該方法。

+0

你有一個想法在哪裏設置videoPreviewLayer的框架? – mafioso