Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //: [Previous](@previous)
- import SwiftUI
- import PlaygroundSupport
- struct PhotoPickerDisplayer: View {
- @State var presentation: Bool = false
- @State var selectedImage: UIImage? = nil
- var body: some View {
- NavigationView{
- VStack{
- if selectedImage != nil {
- Image(uiImage: selectedImage!)
- .resizable()
- .aspectRatio(nil, contentMode: .fit)
- } else {
- Text("Tap the top photo button to select an image to display")
- .font(.footnote)
- .foregroundColor(Color.black.opacity(0.6))
- }
- }.navigationBarTitle("Photo Selection")
- .navigationBarItems(trailing: Button(action: {
- self.presentation = true
- }) {
- Image(systemName: "photo")
- }).sheet(isPresented: $presentation, content: {
- PhotoPickerModal(isPresented: self.$presentation,
- selectedImage: self.$selectedImage)
- })
- }
- }
- }
- struct PhotoPickerModal: UIViewControllerRepresentable {
- class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
- var isPresented: Binding<Bool>
- let selectedImage: Binding<UIImage?>
- init(isPresented: Binding<Bool>, selectedImage: Binding<UIImage?>) {
- self.isPresented = isPresented
- self.selectedImage = selectedImage
- }
- func imagePickerController(
- _ picker: UIImagePickerController,
- didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
- defer {
- picker.dismiss(animated: true, completion: nil)
- }
- if let editedImage = info[.editedImage] as? UIImage {
- self.selectedImage.wrappedValue = editedImage
- return
- } else if let originalImage = info[.originalImage] as? UIImage {
- self.selectedImage.wrappedValue = originalImage
- return
- }
- }
- func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
- isPresented.wrappedValue = false
- }
- }
- let isPresented: Binding<Bool>
- let selectedImage: Binding<UIImage?>
- func makeCoordinator() -> PhotoPickerModal.Coordinator {
- return Coordinator(isPresented: self.isPresented, selectedImage: self.selectedImage)
- }
- func makeUIViewController(context: UIViewControllerRepresentableContext<PhotoPickerModal>) -> UIImagePickerController {
- print(isPresented)
- let vc = UIImagePickerController()
- vc.delegate = context.coordinator
- return vc
- }
- func updateUIViewController(_ uiViewController: UIImagePickerController, context: UIViewControllerRepresentableContext<PhotoPickerModal>) {
- }
- }
- let viewController = UIHostingController(rootView:
- PhotoPickerDisplayer()
- )
- PlaygroundPage.current.liveView = viewController
- //: [Next](@next)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement