以编程方式在AVCaptureVideoPreviewLayer上添加UIButton

问题描述:

我试图在AVCaptureVideoPreviewLayer之上创建覆盖图。以编程方式在AVCaptureVideoPreviewLayer上添加UIButton

我尝试以下,但结果不是我所期待的按钮的标题是不可见的:

let previewLayer: AVCaptureVideoPreviewLayer = AVCaptureVideoPreviewLayer(session: self.avCaptureSession) 
previewLayer.frame = self.view.layer.frame 
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill 
self.view.layer.addSublayer(previewLayer) 



//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) 

previewLayer.addSublayer(captureButton.layer) 

这是当前状态的屏幕截图:

screenshot of the current state

+0

结果是什么?你能告诉我们一个截图吗? – the4kman

+0

@ the4kman我添加了屏幕截图。 – Cloy

您应该将previewLayer添加到单独的视图的子图层。这样,您可以轻松地在主视图上添加其他子视图。

let previewView = UIView(frame: view.frame) 
view.addSubview(previewView) 

previewView.layer.addSublayer(previewLayer) 

[...] 

view.addSubview(captureButton)