代码之家  ›  专栏  ›  技术社区  ›  Cloy

通过编程方式在AVCaptureVideoPreviewLayer上添加UIButton

  •  1
  • Cloy  · 技术社区  · 7 年前

    我试图在上面创建一个覆盖 AVCaptureVideoPreviewLayer

    我尝试了以下操作,但结果与我预期的不同,因为按钮的标题不可见:

    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

    1 回复  |  直到 6 年前
        1
  •  6
  •   glyvox    7 年前

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

    let previewView = UIView(frame: view.frame)
    view.addSubview(previewView)
    
    previewView.layer.addSublayer(previewLayer)
    
    [...]
    
    view.addSubview(captureButton)