Я создаю ViewController, в котором я хочу иметь несколько маленький UIView в углу ViewController для отображения предварительного просмотра камеры. Я использую функцию, чтобы сделать это. Однако, когда я передаю небольшой UIView в функцию, предварительный просмотр камеры не появляется. Странная вещь, если я скажу функции для отображения предварительного просмотра на self.view
, все работает нормально, и я вижу предварительный просмотр камеры. По этой причине я думаю, что проблема в том, как я вставляю слой или что-то подобное.
Вот функция, которую я использую для отображения предварительного просмотра ...
func displayPreview(on view: UIView) throws {
guard let captureSession = self.captureSession, captureSession.isRunning else { throw CameraControllerError.captureSessionIsMissing }
self.previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
self.previewLayer?.videoGravity = AVLayerVideoGravity.resizeAspectFill
self.previewLayer?.connection?.videoOrientation = .portrait
view.layer.insertSublayer(self.previewLayer!, at: 0)
self.previewLayer?.frame = view.frame
}
Я вызываю эту функцию изнутри другой функции, которая управляет настройкой сеанса захвата и других подобных вещей.
func configureCameraController() {
cameraController.prepare {(error) in
if let error = error {
print("ERROR")
print(error)
}else{
}
print("hello")
try! self.cameraController.displayPreview(on: self.mirrorView)
}
}
configureCameraController()
Как заставить слой предварительного просмотра камеры отображаться на меньшем UIView?