MOPictureBrowser.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. //
  2. // MOPictureBrowser.h
  3. // MOPictureBrowser
  4. //
  5. // https://github.com/ebamboo/BBPictureBrowser
  6. //
  7. #import <UIKit/UIKit.h>
  8. /// 本地图片和网络图片都会试图获取一个压缩图片进行展示
  9. /// 只有在成功获取到压缩图片之后,才会真正展示图片
  10. /// 本地图片使用 Apple 提供的压缩算法获取压缩图片
  11. /// 网络图片使用 SDWebImage 提供的压缩算法获取压缩图片
  12. @interface MOPictureModel : NSObject
  13. + (nonnull instancetype)modelWithLocalImage:(nullable UIImage *)local webImage:(nullable NSString *)web;
  14. - (nonnull instancetype)initWithLocalImage:(nullable UIImage *)local webImage:(nullable NSString *)web;
  15. @property (nullable, nonatomic, readonly) UIImage *mo_local;
  16. @property (nullable, nonatomic, readonly) NSString *mo_web;
  17. @property (nullable, nonatomic, readonly) UIImage *mo_localThumb;
  18. @property (nullable, nonatomic, readonly) UIImage *mo_webThumb;
  19. @end
  20. @class MOPictureBrowser;
  21. @protocol MOPictureBrowserDelegate <NSObject>
  22. @optional
  23. /// 图片浏览器关闭动画
  24. /// return:图片浏览器关闭时,动画缩放到的视图
  25. /// 若返回 nil 则没有关闭动画
  26. - (nullable UIView *)mo_pictureBrowser:(nullable MOPictureBrowser *)browser animateToViewAtIndex:(NSInteger)index;
  27. /// 自定义顶部工具栏
  28. /// 高度返回 UITableViewAutomaticDimension 时,表示自适应高度(参考 UITableViewCell 自适应高度)
  29. - (CGFloat)mo_pictureBrowserHeightForTopBar:(nullable MOPictureBrowser *)browser;
  30. - (nullable UIView *)bb_pictureBrowserViewForTopBar:(nullable MOPictureBrowser *)browser;
  31. /// 自定义底部工具栏
  32. /// 高度返回 UITableViewAutomaticDimension 时,表示自适应高度(参考 UITableViewCell 自适应高度)
  33. - (CGFloat)mo_pictureBrowserHeightForBottomBar:(nullable MOPictureBrowser *)browser;
  34. - (nullable UIView *)bb_pictureBrowserViewForBottomBar:(nullable MOPictureBrowser *)browser;
  35. /// 图片浏览器展示了下标为 index 的图片
  36. /// 调用 -mo_openOnView:atIndex: 方法时,也会调用本方法
  37. - (void)mo_pictureBrowser:(nullable MOPictureBrowser *)browser didShowPictureAtIndex:(NSInteger)index topBar:(nullable UIView *)topBar bottomBar:(nullable UIView *)bottomBar;
  38. @end
  39. /// !!! 注意 !!!
  40. /// 本地图片使用 Apple 提供的压缩算法
  41. /// 网络图片使用 SDWebImage 提供的压缩算法
  42. @interface MOPictureBrowser : UIView
  43. /// 构造器
  44. /// @param pictures 要展示的图片
  45. /// @param delegate 设置代理可以监听和响应事件、实现自定义 UI 和关闭动画
  46. /// @param view 图片浏览器打开时动画开始位置视图,若为 nil 则没有打开动画
  47. + (nonnull instancetype)browserWithPictures:(nonnull NSArray<MOPictureModel *> *)pictures delegate:(nullable id<MOPictureBrowserDelegate>)delegate animateFromView:(nullable UIView *)view;
  48. - (nonnull instancetype)initWithPictures:(nonnull NSArray<MOPictureModel *> *)pictures delegate:(nullable id<MOPictureBrowserDelegate>)delegate animateFromView:(nullable UIView *)view;
  49. - (void)mo_openOnView:(nonnull UIView *)onView atIndex:(NSInteger)index;
  50. - (void)mo_close;
  51. @property (nonatomic, readonly) NSInteger mo_currentIndex;
  52. @property (nonatomic, readonly, nonnull) NSArray <MOPictureModel *> *mo_pictureList;
  53. @end