2017-09-08 18 views
0

こんにちは私は迅速に新しい蜂です。カスタムカメラアプリにAVCaptureVideoPreviewLayerを使用しようとしています。キャプチャされた画像はプレビューと同じではありません。 ここでAVCaptureVideoPreviewLayerプレビュー位置がナビゲーションバー(ツールバー)の下で開始されます

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

を次の試み私のコードスニペットは

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ある画像] 2] 2

答えて

1

ビュー位置で始まる(X:0、Y:0)UINavigationControllerのデフォルトであります。ナビゲーションバーは、64px(20px =ステータスバー、44px =ナビゲーションバー)の高さでビューをオーバーラップします。

オプション1:previewLayerの

変更Y位置、

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

オプション2:

self.navigationController?.navigationBar.isTranslucent = false, 

は、この行を追加します。次の2つのオプションは、ビデオのプレビューレイヤフレームを固定していますViewdidLoad()メソッド。 デフォルトでisTranslucent = truefalseを指定すると、Viewフレームの位置はx:0とy:64から始まります。

オプション2

+0

を使用して、コードを変更する必要はありませんが、これを試してみました。プレビューは正しく表示されていました。出力画像ではありません –

関連する問題