RQPhotoManager.h 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. //
  2. // RQPhotoManager.h
  3. // RQCommon
  4. //
  5. // Created by 张嵘 on 2018/11/26.
  6. // Copyright © 2018 张嵘. All rights reserved.
  7. // 图片浏览器+图片选择器
  8. #import <Foundation/Foundation.h>
  9. #import "IDMPhotoBrowser.h"
  10. #import "TZImagePickerController.h"
  11. NS_ASSUME_NONNULL_BEGIN
  12. @interface RQPhotoManager : NSObject
  13. #pragma mark - PhotoBrowser
  14. /**
  15. 图片浏览器
  16. @param viewController presentingViewController (用于presentViewController:browser),可以传nil
  17. @param photosArray 图片模型数组 (NSArray <IDMPhoto *> *)
  18. @param initialPageIndex Set page that photo browser starts on
  19. @param delegate browser.delegate 如果不想使用 传nil
  20. */
  21. + (void)showPhotoBrowser:( UIViewController * _Nullable )viewController photos:(NSArray <IDMPhoto *> *)photosArray initialPageIndex:(NSUInteger)initialPageIndex delegate:(id<IDMPhotoBrowserDelegate> _Nullable )delegate;
  22. /**
  23. 图片浏览器
  24. @param viewController presentingViewController (用于presentViewController:browser),可以传nil
  25. @param photosArray 图片模型数组 (NSArray <IDMPhoto *> *)
  26. @param initialPageIndex Set page that photo browser starts on
  27. @param animatedFromView 从哪个View开始缩放,一般是你 initialPageIndex 对应的view
  28. @param scaleImage 缩放过程中的图片 (UIImage),若不需要 传nil
  29. @param delegate browser.delegate 如果不想使用 传nil
  30. */
  31. + (void)showPhotoBrowser:(UIViewController * _Nullable )viewController photos:(NSArray <IDMPhoto *> *)photosArray initialPageIndex:(NSUInteger)initialPageIndex animatedFromView:(UIView * _Nullable )animatedFromView scaleImage:(UIImage * _Nullable )scaleImage delegate:(id<IDMPhotoBrowserDelegate> _Nullable )delegate;
  32. /**
  33. 图片浏览器
  34. @param viewController presentingViewController (用于presentViewController:browser),可以传nil
  35. @param photoURLsArray 图片URL数组 (NSArray <NSURL *> *)
  36. @param initialPageIndex Set page that photo browser starts on
  37. @param delegate browser.delegate 如果不想使用 传nil
  38. */
  39. + (void)showPhotoBrowser:(UIViewController * _Nullable )viewController photoURLs:(NSArray <NSURL *> *)photoURLsArray initialPageIndex:(NSUInteger)initialPageIndex delegate:(id<IDMPhotoBrowserDelegate> _Nullable )delegate;
  40. /**
  41. 图片浏览器
  42. @param viewController presentingViewController (用于presentViewController:browser),可以传nil
  43. @param photoURLsArray 图片URL数组 (NSArray <NSURL *> *)
  44. @param initialPageIndex Set page that photo browser starts on
  45. @param animatedFromView 从哪个View开始缩放,一般是你 initialPageIndex 对应的view
  46. @param scaleImage 缩放过程中的图片 (UIImage),若不需要 传nil
  47. @param delegate browser.delegate 如果不想使用 传nil
  48. */
  49. + (void)showPhotoBrowser:(UIViewController * _Nullable )viewController photoURLs:(NSArray <NSURL *> *)photoURLsArray initialPageIndex:(NSUInteger)initialPageIndex animatedFromView:(UIView * _Nullable )animatedFromView scaleImage:(UIImage * _Nullable )scaleImage delegate:(id<IDMPhotoBrowserDelegate> _Nullable )delegate;
  50. #pragma mark - ImagePicker
  51. /**
  52. 拍照
  53. @param viewController presentingViewController (用于presentViewController:browser),可以传nil,但是能传尽量传
  54. @param allowCrop 是否允许裁剪
  55. @param completion 拍照获取的图片 注意 image就是原图
  56. */
  57. + (void)fetchPhotosFromCamera:(UIViewController * _Nullable )viewController allowCrop:(BOOL)allowCrop completion:(void (^)(UIImage *image , id asset))completion;
  58. /**
  59. 从相册里面获取图片 (PS:其内部也内嵌了 照相机的功能)
  60. @param viewController presentingViewController (用于presentViewController:browser),可以传nil,但是能传尽量传
  61. @param maxImagesCount 允许选中的最大值
  62. @param allowCrop 是否允许裁剪 多选情况下,无效
  63. @param selecatedAssets 已经选中的照片
  64. @param completion 完成回调 注意 photos装的都是缩略图 若想得到原图,请使用 [MHPhotoManager fetchOriginalPhotoWithAsset:completion]
  65. @param cancel 取消回调 一般传 NULL
  66. */
  67. + (void)fetchPhotosFromAlbum:(UIViewController * _Nullable )viewController
  68. maxImagesCount:(NSInteger)maxImagesCount
  69. allowCrop:(BOOL)allowCrop
  70. selectedAssets:(NSArray *)selecatedAssets
  71. completion:(void(^)(NSArray<UIImage *> *photos , NSArray *assets , BOOL isSelectOriginalPhoto ,NSArray<NSDictionary *> *infos))completion
  72. cancel:(void(^ _Nullable )(void))cancel;
  73. /**
  74. * 预览图片 (PS:一般用于,通过从相册或者照相机,获取到的本地图片的数据,不适合网络图片)
  75. @param viewController presentingViewController (用于presentViewController:browser),可以传nil,但是能传尽量传
  76. @param maxImagesCount 允许选中的最大值
  77. @param selecatedAssets 选中的assets
  78. @param selectedPhotos 选中的photos
  79. @param currentIndex 当前预览的索引
  80. @param completion 完成回调
  81. @param cancel 取消回调 一般 NULL
  82. */
  83. + (void)previewPhotos:(UIViewController * _Nullable )viewController
  84. maxImagesCount:(NSInteger)maxImagesCount
  85. selectedAssets:(NSArray *)selecatedAssets
  86. selectedPhotos:(NSMutableArray *)selectedPhotos
  87. currentIndex:(NSInteger)currentIndex
  88. completion:(void(^)(NSArray<UIImage *> *photos , NSArray *assets , BOOL isSelectOriginalPhoto ,NSArray<NSDictionary *> *infos))completion
  89. cancel:(void(^ _Nullable )(void))cancel;
  90. /**
  91. 获取原图
  92. @param asset asset
  93. @param completion 完成回调 isDegraded = NO 代表photo是原图 否则photo是缩略图
  94. /// 方法completion一般会调多次,一般会先返回缩略图,再返回原图(详见方法内部使用的系统API的说明),如果info[PHImageResultIsDegradedKey] 为 YES,则表明当前返回的是缩略图,否则是原图。
  95. */
  96. + (void)fetchOriginalPhotoWithAsset:(id)asset completion:(void (^)(UIImage *photo , NSDictionary *info , BOOL isDegraded))completion;
  97. /// 允许最大选择
  98. + (NSInteger)maxImagesCount;
  99. /// 细节处理 (开发者请不必关注),控制器必须是 SBViewController 的子类
  100. + (BOOL)isSelectOriginalPhoto; /// 是否选中了原图
  101. + (void)configureSelectOriginalPhoto:(BOOL)selected; /// 配置选中了原图
  102. @end
  103. NS_ASSUME_NONNULL_END