Skip to content

Commit 528f8c8

Browse files
camera
1 parent 4843623 commit 528f8c8

File tree

2 files changed

+131
-80
lines changed

2 files changed

+131
-80
lines changed

Demo/PowerSyncExample/Components/TodoListView.swift

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ struct TodoListView: View {
1010
@State private var error: Error?
1111
@State private var newTodo: NewTodo?
1212
@State private var editing: Bool = false
13+
14+
@State private var selectedImage: UIImage?
15+
@State private var imageData: Data?
16+
@State private var showCamera = false
1317

1418
var body: some View {
1519
List {
@@ -50,7 +54,9 @@ struct TodoListView: View {
5054
}
5155

5256
},
53-
capturePhotoTapped: {}
57+
capturePhotoTapped: {
58+
showCamera = true
59+
}
5460
)
5561
}
5662
.onDelete { indexSet in
@@ -59,6 +65,9 @@ struct TodoListView: View {
5965
}
6066
}
6167
}
68+
.sheet(isPresented: $showCamera) {
69+
CameraView(imageData: $imageData)
70+
}
6271
.animation(.default, value: todos)
6372
.navigationTitle("Todos")
6473
.toolbar {
@@ -124,3 +133,45 @@ struct TodoListView: View {
124133
).environment(SystemManager())
125134
}
126135
}
136+
137+
138+
struct CameraView: UIViewControllerRepresentable {
139+
@Binding var imageData: Data?
140+
@Environment(\.presentationMode) var presentationMode
141+
142+
func makeUIViewController(context: Context) -> UIImagePickerController {
143+
let picker = UIImagePickerController()
144+
picker.delegate = context.coordinator
145+
picker.sourceType = .camera
146+
return picker
147+
}
148+
149+
func updateUIViewController(_: UIImagePickerController, context _: Context) {}
150+
151+
func makeCoordinator() -> Coordinator {
152+
Coordinator(self)
153+
}
154+
155+
class Coordinator: NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
156+
let parent: CameraView
157+
158+
init(_ parent: CameraView) {
159+
self.parent = parent
160+
}
161+
162+
func imagePickerController(_: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
163+
if let image = info[.originalImage] as? UIImage {
164+
// Convert UIImage to Data
165+
if let jpegData = image.jpegData(compressionQuality: 0.8) {
166+
parent.imageData = jpegData
167+
}
168+
}
169+
170+
parent.presentationMode.wrappedValue.dismiss()
171+
}
172+
173+
func imagePickerControllerDidCancel(_: UIImagePickerController) {
174+
parent.presentationMode.wrappedValue.dismiss()
175+
}
176+
}
177+
}
Lines changed: 79 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,79 @@
1-
import PhotosUI
2-
import SwiftUI
3-
4-
struct PhotoPicker: View {
5-
@State private var selectedImage: UIImage?
6-
@State private var imageData: Data?
7-
@State private var showImagePicker = false
8-
@State private var showCamera = false
9-
10-
var body: some View {
11-
VStack {
12-
if let selectedImage = selectedImage {
13-
Image(uiImage: selectedImage)
14-
.resizable()
15-
.scaledToFit()
16-
.frame(height: 300)
17-
18-
Text("Image data size: \(imageData?.count ?? 0) bytes")
19-
}
20-
21-
HStack {
22-
Button("Camera") {
23-
showCamera = true
24-
}
25-
26-
Button("Photo Library") {
27-
showImagePicker = true
28-
}
29-
}
30-
}
31-
.sheet(isPresented: $showCamera) {
32-
CameraView(image: $selectedImage, imageData: $imageData)
33-
}
34-
}
35-
}
36-
37-
struct CameraView: UIViewControllerRepresentable {
38-
@Binding var image: UIImage?
39-
@Binding var imageData: Data?
40-
@Environment(\.presentationMode) var presentationMode
41-
42-
func makeUIViewController(context: Context) -> UIImagePickerController {
43-
let picker = UIImagePickerController()
44-
picker.delegate = context.coordinator
45-
picker.sourceType = .camera
46-
return picker
47-
}
48-
49-
func updateUIViewController(_: UIImagePickerController, context _: Context) {}
50-
51-
func makeCoordinator() -> Coordinator {
52-
Coordinator(self)
53-
}
54-
55-
class Coordinator: NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
56-
let parent: CameraView
57-
58-
init(_ parent: CameraView) {
59-
self.parent = parent
60-
}
61-
62-
func imagePickerController(_: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
63-
if let image = info[.originalImage] as? UIImage {
64-
parent.image = image
65-
66-
// Convert UIImage to Data
67-
if let jpegData = image.jpegData(compressionQuality: 0.8) {
68-
parent.imageData = jpegData
69-
}
70-
}
71-
72-
parent.presentationMode.wrappedValue.dismiss()
73-
}
74-
75-
func imagePickerControllerDidCancel(_: UIImagePickerController) {
76-
parent.presentationMode.wrappedValue.dismiss()
77-
}
78-
}
79-
}
1+
//import PhotosUI
2+
//import SwiftUI
3+
//
4+
//struct PhotoPicker: View {
5+
// @State private var selectedImage: UIImage?
6+
// @State private var imageData: Data?
7+
// @State private var showImagePicker = false
8+
// @State private var showCamera = false
9+
//
10+
// var body: some View {
11+
// VStack {
12+
// if let selectedImage = selectedImage {
13+
// Image(uiImage: selectedImage)
14+
// .resizable()
15+
// .scaledToFit()
16+
// .frame(height: 300)
17+
//
18+
// Text("Image data size: \(imageData?.count ?? 0) bytes")
19+
// }
20+
//
21+
// HStack {
22+
// Button("Camera") {
23+
// showCamera = true
24+
// }
25+
//
26+
// Button("Photo Library") {
27+
// showImagePicker = true
28+
// }
29+
// }
30+
// }
31+
// .sheet(isPresented: $showCamera) {
32+
// CameraView(image: $selectedImage, imageData: $imageData)
33+
// }
34+
// }
35+
//}
36+
//
37+
//struct CameraView: UIViewControllerRepresentable {
38+
// @Binding var image: UIImage?
39+
// @Binding var imageData: Data?
40+
// @Environment(\.presentationMode) var presentationMode
41+
//
42+
// func makeUIViewController(context: Context) -> UIImagePickerController {
43+
// let picker = UIImagePickerController()
44+
// picker.delegate = context.coordinator
45+
// picker.sourceType = .camera
46+
// return picker
47+
// }
48+
//
49+
// func updateUIViewController(_: UIImagePickerController, context _: Context) {}
50+
//
51+
// func makeCoordinator() -> Coordinator {
52+
// Coordinator(self)
53+
// }
54+
//
55+
// class Coordinator: NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
56+
// let parent: CameraView
57+
//
58+
// init(_ parent: CameraView) {
59+
// self.parent = parent
60+
// }
61+
//
62+
// func imagePickerController(_: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
63+
// if let image = info[.originalImage] as? UIImage {
64+
// parent.image = image
65+
//
66+
// // Convert UIImage to Data
67+
// if let jpegData = image.jpegData(compressionQuality: 0.8) {
68+
// parent.imageData = jpegData
69+
// }
70+
// }
71+
//
72+
// parent.presentationMode.wrappedValue.dismiss()
73+
// }
74+
//
75+
// func imagePickerControllerDidCancel(_: UIImagePickerController) {
76+
// parent.presentationMode.wrappedValue.dismiss()
77+
// }
78+
// }
79+
//}

0 commit comments

Comments
 (0)