@@ -13,7 +13,7 @@ import Amplify
1313
1414final class _LivenessViewController : UIViewController {
1515 let viewModel : FaceLivenessDetectionViewModel
16- var previewLayer : CALayer !
16+ var previewLayer : CALayer ?
1717
1818 let faceShapeLayer = CAShapeLayer ( )
1919 var ovalExists = false
@@ -39,8 +39,9 @@ final class _LivenessViewController: UIViewController {
3939 }
4040
4141 deinit {
42- self . previewLayer. removeFromSuperlayer ( )
43- ( self . previewLayer as? AVCaptureVideoPreviewLayer ) ? . session = nil
42+ guard let previewLayer = self . previewLayer else { return }
43+ previewLayer. removeFromSuperlayer ( )
44+ ( previewLayer as? AVCaptureVideoPreviewLayer ) ? . session = nil
4445 self . previewLayer = nil
4546 }
4647
@@ -84,7 +85,9 @@ final class _LivenessViewController: UIViewController {
8485
8586 avLayer. position = view. center
8687 self . previewLayer = avLayer
87- viewModel. cameraViewRect = previewLayer. frame
88+ if let previewLayer = self . previewLayer {
89+ viewModel. cameraViewRect = previewLayer. frame
90+ }
8891
8992 DispatchQueue . main. async {
9093 self . view. layer. insertSublayer ( avLayer, at: 0 )
@@ -112,11 +115,12 @@ final class _LivenessViewController: UIViewController {
112115extension _LivenessViewController : FaceLivenessViewControllerPresenter {
113116 func displaySingleFrame( uiImage: UIImage ) {
114117 DispatchQueue . main. async {
118+ guard let previewLayer = self . previewLayer else { return }
115119 let imageView = UIImageView ( image: uiImage)
116- imageView. frame = self . previewLayer. frame
120+ imageView. frame = previewLayer. frame
117121 self . view. addSubview ( imageView)
118- self . previewLayer . removeFromSuperlayer ( )
119- ( self . previewLayer as? AVCaptureVideoPreviewLayer ) ? . session = nil
122+ ( previewLayer as? AVCaptureVideoPreviewLayer ) ? . session = nil
123+ previewLayer. removeFromSuperlayer ( )
120124 self . viewModel. stopRecording ( )
121125 }
122126 }
@@ -147,14 +151,15 @@ extension _LivenessViewController: FaceLivenessViewControllerPresenter {
147151
148152 func drawOvalInCanvas( _ ovalRect: CGRect ) {
149153 DispatchQueue . main. async {
154+ guard let previewLayer = self . previewLayer else { return }
150155 self . faceGuideRect = ovalRect
151156
152157 let ovalView = OvalView (
153- frame: self . previewLayer. frame,
158+ frame: previewLayer. frame,
154159 ovalFrame: ovalRect
155160 )
156161 self . ovalView = ovalView
157- ovalView. center = self . previewLayer. position
162+ ovalView. center = previewLayer. position
158163 self . view. insertSubview (
159164 ovalView,
160165 belowSubview: self . freshnessView
0 commit comments