public void WillDisplayCameraCell(CameraCollectionViewCell cell) { SetupCameraCellIfNeeded(cell); if (cell is LivePhotoCameraCell liveCameraCell) { liveCameraCell.UpdateWithCameraMode(CaptureSettings.CameraMode); } if (_captureSession.PhotoCaptureSession != null) { //update live photos cell.UpdateLivePhotoStatus(_captureSession.PhotoCaptureSession.InProgressLivePhotoCapturesCount > 0, false); } //update video recording status var isRecordingVideo = _captureSession.VideoCaptureSession?.IsRecordingVideo ?? false; cell.UpdateRecordingVideoStatus(isRecordingVideo, false); //update authorization status if it's changed var status = AVCaptureDevice.GetAuthorizationStatus(AVAuthorizationMediaType.Video); if (cell.AuthorizationStatus != status) { cell.AuthorizationStatus = status; } //resume session only if not recording video if (!isRecordingVideo) { _captureSession.Resume(); } }