Добавить UIButton поверх AVCaptureVideoPreviewLayer программно

Я пытаюсь создать оверлей поверх 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)

Вот скриншот текущего состояния:

скриншот текущего состояния

1 ответ

Решение

Вы должны добавить previewLayer на отдельный подслой представления. Таким образом, вы можете легко добавить другие подпредставления над основным видом.

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

previewView.layer.addSublayer(previewLayer)

[...]

view.addSubview(captureButton)
Другие вопросы по тегам