2017-08-05 3 views
1

ビデオプレビューレイヤー上にオーバーレイを作成しようとしています。私は次のことを試みた。しかし、私のオーバーレイビューはプレビューレイヤーの上に表示されていません。単に空白の画面が表示されます。AVCaptureVideoPreviewLayerオーバーレイ

CameraOverlayViewは

let previewLayer: AVCaptureVideoPreviewLayer = AVCaptureVideoPreviewLayer(session: self.avCaptureSession) 

    previewLayer.frame = self.view.layer.frame 

    previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 

    self.view.layer.addSublayer(previewLayer) 

    let cameraOverlay = CameraOverlay(nibName:"CameraOverlay",bundle: nil) 

    let cameraOverlayView:CameraOverlayView = cameraOverlay.view as! CameraOverlayView 

    self.view.addSubview(cameraOverlayView) 

    cameraOverlayView.layer.addSublayer(previewLayer)   

    self.view.bringSubviewToFront(cameraOverlayView) 

しかし、私は、個々のボタンと、彼らが表示されるプレビュー層上のUIViewを追加していたときに私のデザインが含まれています。

しかし、私はオーバーレイとしてそのようなビューの多くを捨てたいと私はまたconstaintsを追加したい。もし私がオーバーレイとして自分のペン先を追加できるのであれば、はるかに簡単です。

let previewLayer: AVCaptureVideoPreviewLayer = AVCaptureVideoPreviewLayer(session: self.avCaptureSession) 

    previewLayer.frame = self.view.layer.frame 
    previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 
    self.view.layer.addSublayer(previewLayer) 

    //Add Rectangle 
    var cgRect = CGRectMake(0, 0, previewLayer.frame.width * (3/4) , previewLayer.frame.height) 
    let myView = UIImageView() 
    myView.frame = cgRect 
    myView.backgroundColor = UIColor.clearColor() 
    myView.opaque = false 
    myView.layer.cornerRadius = 10 
    myView.layer.borderColor = UIColor.blackColor().CGColor 
    myView.layer.borderWidth = 3 
    myView.layer.masksToBounds = true 
    //previewLayer.addSublayer(myView.layer) 
    //Add Rectangle 

    //Add Button 
    let captureButton = UIButton(frame: CGRectMake(0, 0, 100 , 100)) 
    captureButton.backgroundColor = UIColor.grayColor() 
    captureButton.setTitle("Capture", forState: .Normal) 
    captureButton.setTitleColor(UIColor.redColor(), forState: .Normal) 
    captureButton.addTarget(self, action: "actionCapture:", forControlEvents: .TouchDragInside) 

    let previewView = UIView(frame: view.frame) 
    view.addSubview(previewView) 
    previewView.layer.addSublayer(previewLayer) 
    view.addSubview(myView) 
    view.addSubview(captureButton) 
    captureButton.bringSubviewToFront(self.view) 
+0

幸運を働きました。あなたが問題を抱えているとき私たちに知らせてください;-) –

+0

@意味 - 問題私は問題をさらに編集して説明しました。それを確認してください。 – Cloy

答えて

0

以下は

let previewLayer: AVCaptureVideoPreviewLayer = AVCaptureVideoPreviewLayer(session: self.avCaptureSession) 

previewLayer.frame = self.view.layer.frame 

previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 

self.view.layer.addSublayer(previewLayer)   

let cameraOverlay = CameraOverlay(nibName:"CameraOverlay",bundle: nil) 

let cameraOverlayView:CameraOverlayView = cameraOverlay.view as! CameraOverlayView 

let previewView = UIView(frame: view.frame) 

self.view.addSubview(previewView) 

previewView.layer.addSublayer(previewLayer) 

self.view.addSubview(cameraOverlayView) 

self.avCaptureSession?.startRunning() 
関連する問題