RDSImagePicker.m 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //
  2. // RDSImagePicker.m
  3. // SmartLightForBigFish
  4. //
  5. // Created by coderYK on 2017/8/19.
  6. // Copyright © 2017年 RD. All rights reserved.
  7. //
  8. #import "RDSImagePicker.h"
  9. @interface RDSImagePicker ()<UIImagePickerControllerDelegate, UINavigationControllerDelegate>
  10. /** 图片选择完成的回调*/
  11. @property (nonatomic, copy) pickComplectBlock pickedBlock;
  12. @property (nonatomic, assign) BOOL needEdit;
  13. @end
  14. @implementation RDSImagePicker
  15. + (instancetype)sharePicker {
  16. static RDSImagePicker *_instance;
  17. static dispatch_once_t onceToken;
  18. dispatch_once(&onceToken, ^{
  19. _instance = [[self alloc] init];
  20. });
  21. return _instance;
  22. }
  23. - (void)rds_pickImageFrom:(EImageSourceType)imgSourceType needEdit:(BOOL)need complected:(pickComplectBlock)pickComplectHandler {
  24. _pickedBlock = pickComplectHandler;
  25. _needEdit = need;
  26. UIWindow *keyWindow = [[[UIApplication sharedApplication] delegate] window];
  27. UIImagePickerController *pickerVC = [[UIImagePickerController alloc] init];
  28. pickerVC.delegate = self;
  29. pickerVC.allowsEditing = YES;
  30. pickerVC.sourceType = imgSourceType == EImageFromPhoto ? UIImagePickerControllerSourceTypeSavedPhotosAlbum : UIImagePickerControllerSourceTypeCamera;
  31. [keyWindow.rootViewController presentViewController:pickerVC animated:YES completion:nil];
  32. }
  33. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {
  34. NSString *key = _needEdit ? UIImagePickerControllerEditedImage : UIImagePickerControllerOriginalImage;
  35. UIImage *image = (UIImage *)info[key];
  36. //RDS_WEAKSELF(weakSelf)
  37. dispatch_async(dispatch_get_main_queue(), ^{
  38. if (image && self.pickedBlock) {
  39. self.pickedBlock(image);
  40. self.pickedBlock = nil;
  41. }
  42. });
  43. [picker dismissViewControllerAnimated:YES completion:nil];
  44. }
  45. - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
  46. //RDS_WEAKSELF(weakSelf)
  47. dispatch_async(dispatch_get_main_queue(), ^{
  48. if (self.pickedBlock) {
  49. self.pickedBlock(nil);
  50. }
  51. });
  52. [picker dismissViewControllerAnimated:YES completion:nil];
  53. }
  54. @end