IHPhotoPicker.swift 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. //
  2. // IHPhotoPicker.swift
  3. // Inhealth
  4. //
  5. // Created by weclouds on 2019/12/29.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. class IHPhotoPicker: NSObject , UIImagePickerControllerDelegate, UINavigationControllerDelegate {
  10. var target : UIViewController?
  11. var didClickImageBlock:((UIImage)->Void)?
  12. fileprivate let imagePicker = UIImagePickerController()
  13. override init() {
  14. super.init()
  15. }
  16. func showImagePicker(vc : UIViewController, completion: @escaping (UIImage)->Void) {
  17. self.didClickImageBlock = completion
  18. self.target = vc
  19. imagePicker.delegate = self
  20. show()
  21. }
  22. fileprivate func show(){
  23. let alert = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
  24. alert.addAction(UIAlertAction(title: "相册", style: .default, handler: { (button) in
  25. self.imagePicker.sourceType = .photoLibrary
  26. self.imagePicker.delegate = self
  27. self.imagePicker.modalPresentationStyle = .fullScreen
  28. self.target?.present(self.imagePicker, animated: true, completion: {
  29. self.imagePicker.delegate = self
  30. })
  31. }))
  32. alert.addAction(UIAlertAction(title: "相机", style: .default, handler: { (button) in
  33. self.imagePicker.sourceType = .camera
  34. self.imagePicker.delegate = self
  35. self.imagePicker.modalPresentationStyle = .fullScreen
  36. self.target?.present(self.imagePicker, animated: true, completion: {
  37. self.imagePicker.delegate = self
  38. })
  39. }))
  40. alert.addAction(UIAlertAction(title: "取消", style: .cancel, handler: nil))
  41. self.target?.present(alert, animated: true, completion: nil)
  42. }
  43. func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
  44. imagePicker.dismiss(animated: true, completion: nil)
  45. }
  46. func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
  47. log.debug(info)
  48. guard let pickedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage else { return }
  49. if let block = self.didClickImageBlock {
  50. block(pickedImage)
  51. }
  52. imagePicker.dismiss(animated: true, completion: nil)
  53. }
  54. }