@State private var showPicker = false
@State private var selectedImage = UIImage()
Button("Select Photo") {
showPicker = true
}
.sheet(isPresented: $showPicker) {
AKImagePicker(
isPresented: $showPicker,
selectedImage: $selectedImage,
onImageSelectionCompleted: { image in
print("Image selected: \(image.size)")
// Process the image
},
sourceType: .camera // Falls back to .photoLibrary if camera unavailable
)
}
// Display selected image
if selectedImage != UIImage() {
Image(uiImage: selectedImage)
.resizable()
.scaledToFit()
.frame(height: 200)
}// Simple usage with icon placeholder
AKImagePickerView { image in
print("New image selected")
saveImage(image)
} content: {
VStack {
Image(systemName: "person.circle.fill")
.font(.system(size: 80))
.foregroundColor(.gray)
Text("Tap to select photo")
.font(.caption)
}
}
.frame(width: 120, height: 120)
.clipShape(Circle())
// With initial image
AKImagePickerView(initialImage: userData.profileImageData) { image in
userData.updateProfilePicture(image)
} content: {
ZStack {
Color.gray.opacity(0.2)
VStack {
Icon(systemName: "camera.fill")
Text("Add Photo")
}
}
}
.frame(width: 200, height: 200)
.cornerRadius(12)
// Inline in a form
Form {
Section("Profile") {
HStack {
Text("Avatar")
Spacer()
AKImagePickerView { image in
viewModel.avatar = image
} content: {
Image(systemName: "photo")
.foregroundColor(.blue)
}
.frame(width: 60, height: 60)
.clipShape(RoundedRectangle(cornerRadius: 8))
}
}
}<key>NSCameraUsageDescription</key>
<string>We need camera access to take photos</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>We need photo library access to select images</string>