2017-09-08 2 views
0

Hallo, ich bin eine neue Biene zu swift. Ich versuche, AVCaptureVideoPreviewLayer für meine benutzerdefinierte Kamera-App zu verwenden. aber das aufgenommene Bild ist nicht dasselbe wie die Vorschau. versucht folgendeAVCaptureVideoPreviewLayer Vorschau Position beginnt unter Navigationsleiste (Symbolleiste)

self.previewLayer.frame = self.view.layer.bounds 
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 

hier ist mein Code-Schnipsel

self.previewLayer.frame = self.view.layer.bounds 
     self.view.layer.insertSublayer(self.previewLayer!, at: 0) 
     previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 
     captureSession.startRunning() 

     let dataOutput = AVCaptureVideoDataOutput() 
     dataOutput.videoSettings = [(kCVPixelBufferPixelFormatTypeKey as NSString):NSNumber(value:kCVPixelFormatType_32BGRA)] 

     dataOutput.alwaysDiscardsLateVideoFrames = true[capture screen][1] 

result [![enter image description here Bild] 2] 2

Antwort

1

Die Position Ansicht mit starten (x: 0, y: 0) Verzug in UINavigationController . Die Navigationsleiste überlappt die Ansicht um 64px (20px = Statusleiste, 44px = Navigationsleiste) Höhe. Sie haben zwei Optionen fix Videovorschau Schichtrahmen:

Option1:

Änderung Y-Position des previewLayer,

var frame = self.view.layer.bounds 
frame.origin.y = 64 
frame.size.height = frame.size.height-64 
self.previewLayer.frame = frame 

Option2:

self.navigationController?.navigationBar.isTranslucent = false, 

fügen Sie diese Zeile in ViewdidLoad() -Methode. standardmäßig isTranslucent = true, zuweisen false bedeutet, die Ansicht Frame-Position beginnt von x: 0 und y: 64.

keine Notwendigkeit, durch den Code zu ändern Option2 mit

+0

versuchte dies. Es wurde nur die Vorschau korrekt angezeigt. nicht das Ausgabebild –

Verwandte Themen