Skip to content

Instantly share code, notes, and snippets.

@doganaysahins
Created January 23, 2024 20:55
Show Gist options
  • Select an option

  • Save doganaysahins/93e0678b209aebfe7e83c310a0274f17 to your computer and use it in GitHub Desktop.

Select an option

Save doganaysahins/93e0678b209aebfe7e83c310a0274f17 to your computer and use it in GitHub Desktop.
Camera with image overlayered...
struct ContentView: View {
@State private var showCamera = false
@State private var selectedImage: UIImage?
@State var isShooted = false
@State var image: UIImage?
var body: some View {
VStack {
Button {
showCamera.toggle()
} label: {
Text("Acces the camera")
}
}
.padding()
.fullScreenCover(isPresented: $showCamera) {
ZStack(alignment: .center) {
CameraView(selectedImage: $selectedImage)
Image(systemName: "hand.raised")
.resizable()
.renderingMode(.template)
.frame(width: 100, height: 150)
.scaledToFit()
.opacity(isShooted ? 1 : 0)
}
}
}
}
#Preview {
ContentView()
}
struct CameraView: UIViewControllerRepresentable {
@Binding var selectedImage: UIImage?
@Environment(\.presentationMode) var isPresented
func makeUIViewController(context: Context) -> UIImagePickerController {
let imagePicker = UIImagePickerController()
imagePicker.sourceType = .camera
imagePicker.allowsEditing = true
imagePicker.delegate = context.coordinator
return imagePicker
}
func updateUIViewController(_ uiViewController: UIImagePickerController, context: Context) {
}
func makeCoordinator() -> Coordinator {
return Coordinator(picker: self)
}
}
class Coordinator: NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
var picker: CameraView
init(picker: CameraView) {
self.picker = picker
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
guard let selectedImage = info[.originalImage] as? UIImage else { return }
self.picker.selectedImage = selectedImage
self.picker.isPresented.wrappedValue.dismiss()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment