Skip to content

Commit bb5cc4a

Browse files
authored
fix: update preview layer to be optional and check for nil values (#122)
1 parent ca1f967 commit bb5cc4a

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

Sources/FaceLiveness/Views/Liveness/LivenessViewController.swift

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import Amplify
1313

1414
final 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 {
112115
extension _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

Comments
 (0)