Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. //: [Previous](@previous)
  2.  
  3. import SwiftUI
  4. import PlaygroundSupport
  5.  
  6. struct PhotoPickerDisplayer: View {
  7.  
  8. @State var presentation: Bool = false
  9. @State var selectedImage: UIImage? = nil
  10.  
  11. var body: some View {
  12. NavigationView{
  13. VStack{
  14. if selectedImage != nil {
  15. Image(uiImage: selectedImage!)
  16. .resizable()
  17. .aspectRatio(nil, contentMode: .fit)
  18. } else {
  19. Text("Tap the top photo button to select an image to display")
  20. .font(.footnote)
  21. .foregroundColor(Color.black.opacity(0.6))
  22. }
  23.  
  24. }.navigationBarTitle("Photo Selection")
  25. .navigationBarItems(trailing: Button(action: {
  26. self.presentation = true
  27. }) {
  28. Image(systemName: "photo")
  29. }).sheet(isPresented: $presentation, content: {
  30. PhotoPickerModal(isPresented: self.$presentation,
  31. selectedImage: self.$selectedImage)
  32. })
  33. }
  34. }
  35. }
  36.  
  37. struct PhotoPickerModal: UIViewControllerRepresentable {
  38.  
  39. class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
  40.  
  41. var isPresented: Binding<Bool>
  42. let selectedImage: Binding<UIImage?>
  43.  
  44. init(isPresented: Binding<Bool>, selectedImage: Binding<UIImage?>) {
  45. self.isPresented = isPresented
  46. self.selectedImage = selectedImage
  47. }
  48.  
  49. func imagePickerController(
  50. _ picker: UIImagePickerController,
  51. didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
  52. defer {
  53. picker.dismiss(animated: true, completion: nil)
  54. }
  55. if let editedImage = info[.editedImage] as? UIImage {
  56. self.selectedImage.wrappedValue = editedImage
  57. return
  58. } else if let originalImage = info[.originalImage] as? UIImage {
  59. self.selectedImage.wrappedValue = originalImage
  60. return
  61. }
  62. }
  63.  
  64. func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
  65. isPresented.wrappedValue = false
  66. }
  67. }
  68.  
  69. let isPresented: Binding<Bool>
  70. let selectedImage: Binding<UIImage?>
  71.  
  72. func makeCoordinator() -> PhotoPickerModal.Coordinator {
  73. return Coordinator(isPresented: self.isPresented, selectedImage: self.selectedImage)
  74. }
  75.  
  76. func makeUIViewController(context: UIViewControllerRepresentableContext<PhotoPickerModal>) -> UIImagePickerController {
  77. print(isPresented)
  78. let vc = UIImagePickerController()
  79. vc.delegate = context.coordinator
  80. return vc
  81. }
  82.  
  83. func updateUIViewController(_ uiViewController: UIImagePickerController, context: UIViewControllerRepresentableContext<PhotoPickerModal>) {
  84.  
  85. }
  86. }
  87.  
  88.  
  89. let viewController = UIHostingController(rootView:
  90. PhotoPickerDisplayer()
  91. )
  92. PlaygroundPage.current.liveView = viewController
  93.  
  94. //: [Next](@next)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement