Hier ist der Bildschirm der benötigten Komponente:
https://i.sstatic.net/ jtGZ7fhF.png
Diese Vorschau erscheint unmittelbar nach der Aufnahme des Fotos. Ich kann das Foto entweder ablehnen oder das von mir aufgenommene Foto verwenden.
Ich muss das Design dieses Fotos ändern: Ersetzen Sie die Schaltflächen durch andere Schaltflächen und fügen Sie ein Textfeld hinzu. Wie kann ich das mit Standardcode machen?
Hier ist mein Code:
Code: Select all
struct ImagePicker: UIViewControllerRepresentable {
@Environment(\.presentationMode) private var presentationMode
@Binding var state: PhotoViewModel.ImageState
@Binding var selectedImage: UIImage?
let sourceType: UIImagePickerController.SourceType
init(selectedImage: Binding, sourceType: UIImagePickerController.SourceType) {
self._state = .constant(.none)
self._selectedImage = selectedImage
self.sourceType = sourceType
}
init(state: Binding, sourceType: UIImagePickerController.SourceType) {
self._selectedImage = .constant(nil)
self._state = state
self.sourceType = sourceType
}
func makeUIViewController(context: Context) -> UIImagePickerController {
let picker = UIImagePickerController()
picker.sourceType = sourceType
if sourceType == .camera {
picker.cameraDevice = .rear
}
picker.delegate = context.coordinator
picker.allowsEditing = false
return picker
}
func updateUIViewController(_ uiViewController: UIImagePickerController, context: Context) {}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
let parent: ImagePicker
init(_ parent: ImagePicker) {
self.parent = parent
}
func imagePickerController(
_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]
) {
if let uiImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
parent.state = .picked(uiImage)
parent.selectedImage = uiImage
parent.presentationMode.wrappedValue.dismiss()
}
}
}
}