IceCubesApp/Packages/Status/Sources/Status/Editor/Components/StatusEditorCameraPickerView.swift

37 lines
1.1 KiB
Swift
Raw Normal View History

import SwiftUI
2023-07-19 05:46:25 +00:00
import UIKit
struct StatusEditorCameraPickerView: UIViewControllerRepresentable {
@Binding var selectedImage: UIImage?
2023-12-04 13:14:42 +00:00
@Environment(\.dismiss) var dismiss
2023-07-19 05:46:25 +00:00
class Coordinator: NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
let picker: StatusEditorCameraPickerView
2023-07-19 05:46:25 +00:00
init(picker: StatusEditorCameraPickerView) {
self.picker = picker
}
2023-07-19 05:46:25 +00:00
func imagePickerController(_: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
guard let selectedImage = info[.originalImage] as? UIImage else { return }
2023-07-19 05:46:25 +00:00
picker.selectedImage = selectedImage
2023-12-04 13:14:42 +00:00
picker.dismiss()
}
}
2023-07-19 05:46:25 +00:00
func makeUIViewController(context: Context) -> UIImagePickerController {
let imagePicker = UIImagePickerController()
#if !os(visionOS)
imagePicker.sourceType = .camera
#endif
2023-04-03 12:17:55 +00:00
imagePicker.delegate = context.coordinator
return imagePicker
}
2023-07-19 05:46:25 +00:00
func updateUIViewController(_: UIImagePickerController, context _: Context) {}
func makeCoordinator() -> Coordinator {
Coordinator(picker: self)
}
}