@@ -13,7 +13,7 @@ import Amplify
13
13
14
14
final class _LivenessViewController : UIViewController {
15
15
let viewModel : FaceLivenessDetectionViewModel
16
- var previewLayer : CALayer !
16
+ var previewLayer : CALayer ?
17
17
18
18
let faceShapeLayer = CAShapeLayer ( )
19
19
var ovalExists = false
@@ -39,8 +39,9 @@ final class _LivenessViewController: UIViewController {
39
39
}
40
40
41
41
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
44
45
self . previewLayer = nil
45
46
}
46
47
@@ -84,7 +85,9 @@ final class _LivenessViewController: UIViewController {
84
85
85
86
avLayer. position = view. center
86
87
self . previewLayer = avLayer
87
- viewModel. cameraViewRect = previewLayer. frame
88
+ if let previewLayer = self . previewLayer {
89
+ viewModel. cameraViewRect = previewLayer. frame
90
+ }
88
91
89
92
DispatchQueue . main. async {
90
93
self . view. layer. insertSublayer ( avLayer, at: 0 )
@@ -112,11 +115,12 @@ final class _LivenessViewController: UIViewController {
112
115
extension _LivenessViewController : FaceLivenessViewControllerPresenter {
113
116
func displaySingleFrame( uiImage: UIImage ) {
114
117
DispatchQueue . main. async {
118
+ guard let previewLayer = self . previewLayer else { return }
115
119
let imageView = UIImageView ( image: uiImage)
116
- imageView. frame = self . previewLayer. frame
120
+ imageView. frame = previewLayer. frame
117
121
self . view. addSubview ( imageView)
118
- self . previewLayer . removeFromSuperlayer ( )
119
- ( self . previewLayer as? AVCaptureVideoPreviewLayer ) ? . session = nil
122
+ ( previewLayer as? AVCaptureVideoPreviewLayer ) ? . session = nil
123
+ previewLayer. removeFromSuperlayer ( )
120
124
self . viewModel. stopRecording ( )
121
125
}
122
126
}
@@ -147,14 +151,15 @@ extension _LivenessViewController: FaceLivenessViewControllerPresenter {
147
151
148
152
func drawOvalInCanvas( _ ovalRect: CGRect ) {
149
153
DispatchQueue . main. async {
154
+ guard let previewLayer = self . previewLayer else { return }
150
155
self . faceGuideRect = ovalRect
151
156
152
157
let ovalView = OvalView (
153
- frame: self . previewLayer. frame,
158
+ frame: previewLayer. frame,
154
159
ovalFrame: ovalRect
155
160
)
156
161
self . ovalView = ovalView
157
- ovalView. center = self . previewLayer. position
162
+ ovalView. center = previewLayer. position
158
163
self . view. insertSubview (
159
164
ovalView,
160
165
belowSubview: self . freshnessView
0 commit comments