add crop photo

This commit is contained in:
cheykrym 2025-12-10 02:41:28 +03:00
parent f1ec7e637b
commit 134ba39914

View File

@ -99,7 +99,7 @@ struct EditProfileView: View {
.navigationTitle("Профиль") .navigationTitle("Профиль")
.onAppear(perform: loadProfile) .onAppear(perform: loadProfile)
.sheet(isPresented: $showImagePicker) { .sheet(isPresented: $showImagePicker) {
ImagePicker(image: $avatarImage) ImagePicker(image: $avatarImage, allowsEditing: true)
} }
.onChange(of: avatarImage) { newValue in .onChange(of: avatarImage) { newValue in
guard let image = newValue else { return } guard let image = newValue else { return }
@ -260,11 +260,13 @@ struct EditProfileView: View {
struct ImagePicker: UIViewControllerRepresentable { struct ImagePicker: UIViewControllerRepresentable {
@Binding var image: UIImage? @Binding var image: UIImage?
var allowsEditing: Bool = false
@Environment(\.presentationMode) private var presentationMode @Environment(\.presentationMode) private var presentationMode
func makeUIViewController(context: Context) -> UIImagePickerController { func makeUIViewController(context: Context) -> UIImagePickerController {
let picker = UIImagePickerController() let picker = UIImagePickerController()
picker.delegate = context.coordinator picker.delegate = context.coordinator
picker.allowsEditing = allowsEditing
return picker return picker
} }
@ -282,7 +284,9 @@ struct ImagePicker: UIViewControllerRepresentable {
} }
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) { func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]) {
if let uiImage = info[.originalImage] as? UIImage { if let editedImage = info[.editedImage] as? UIImage {
parent.image = editedImage
} else if let uiImage = info[.originalImage] as? UIImage {
parent.image = uiImage parent.image = uiImage
} }
parent.presentationMode.wrappedValue.dismiss() parent.presentationMode.wrappedValue.dismiss()