我的ImagePicker
不允许用户返回/退出画廊...((右上角应该有一个cancel
按钮:
这是我的ImagePicker
:
struct ImagePicker: UIViewControllerRepresentable {
let key: String
@Binding var uiImage: UIImage?
@Environment(\.presentationMode) var presentationMode
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
func makeUIViewController(context: Context) -> UIImagePickerController {
let controller = UIImagePickerController()
controller.sourceType = .photoLibrary
controller.delegate = context.coordinator
return controller
}
func updateUIViewController(_ uiViewController: UIImagePickerController, context: Context) {
}
class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate{
var parent: ImagePicker
init(_ parent: ImagePicker) {
self.parent = parent
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let img = info[.originalImage] as? UIImage {
parent.uiImage = img
}
parent.presentationMode.wrappedValue.dismiss()
}
}
}
这是使用它/触发它打开的视图:
struct EditableCircleImage: View {
@ObservedObject var storage = Storages()
let key: String
let imgName: String?
@State var image: Image = Image(systemName: "plus.circle")
@State var uiImage: UIImage?
@Binding var showImagePicker: Bool
var body: some View {
ZStack {
image
.resizable()
.scaledToFit()
.aspectRatio(contentMode: .fill)
.frame(width: 80, height: 80)
.clipShape(Circle())
}
.padding(8)
.sheet(isPresented: $showImagePicker, onDismiss: loadImage){
ImagePicker(key: self.key, uiImage: self.$uiImage)
}
}
知道什么问题吗?