2017-03-20 2 views
1

Run cameraApp in xcode, Breite ist nicht vollWarum Videobildbreite ist die Hälfte?

cameraview ist nicht voll auf uiview.

bitte helfen Sie mir T_T

kann ich auch nicht gut Englisch sprechen, so fragen Frage sehr schwierig

override func viewWillAppear(_ animated: Bool) { 
    captureSession = AVCaptureSession() 
    stillImageOutput = AVCapturePhotoOutput() 

    captureSession.sessionPreset = AVCaptureSessionPreset1920x1080 

    let device = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) 

    do { 
     let input = try AVCaptureDeviceInput(device: device) 

     if (captureSession.canAddInput(input)) { 
      captureSession.addInput(input) 

      if (captureSession.canAddOutput(stillImageOutput)) { 
       captureSession.addOutput(stillImageOutput) 
       captureSession.startRunning() 

       previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) 
       previewLayer?.videoGravity = AVLayerVideoGravityResizeAspect 
       previewLayer?.connection.videoOrientation = AVCaptureVideoOrientation.portrait 

       cameraView.layer.addSublayer(previewLayer!) 


       previewLayer?.position = CGPoint(x: self.cameraView.frame.width/2, y: self.cameraView.frame.height/2) 
       previewLayer?.bounds = cameraView.bounds 
      } 
     } 
    } 
    catch { 
     print(error) 
    } 
} 

Antwort

0

Wenn ich Ihren Code verwenden und die previewLayer meiner Hauptansicht hinzufügen, erhalte ich eine vollständige Größe Kameraansicht im Hochformat, aber eine halbe Kameraansicht in Querformat.

So könnte die Isuse in wie Sie die cameraView eingerichtet haben, oder es könnte etwas anderes sein. Ich kann nicht sicher sein. Überprüfen Sie die Größe und Grenzen Ihrer cameraView, um zu sehen, wie es eingerichtet ist.

Auch die videoGravity Eigenschaft für previewLayer steuert, wie die Vorschau angezeigt wird. Sie haben es auf AVLayerVideoGravityResizeAspect eingestellt, wodurch das Video in die Grenzen der Ebene passt. Wenn die cameraView richtig eingestellt ist, können Sie eine andere Einstellung wie AVLayerVideoGravityResizeAspectFill versuchen, um zu sehen, ob das Ihnen das gewünschte Ergebnis geben würde.

Verwandte Themen