2017-08-05 29 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()