YBImageBrowser.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. //
  2. // YBImageBrowser.h
  3. // YBImageBrowserDemo
  4. //
  5. // Created by 波儿菜 on 2019/6/5.
  6. // Copyright © 2019 波儿菜. All rights reserved.
  7. //
  8. #import "YBIBCollectionView.h"
  9. #import "YBImageBrowserDataSource.h"
  10. #import "YBImageBrowserDelegate.h"
  11. #import "YBIBDataProtocol.h"
  12. #import "YBIBCellProtocol.h"
  13. #import "YBIBAnimatedTransition.h"
  14. #import "YBIBAuxiliaryViewHandler.h"
  15. #import "YBIBToolViewHandler.h"
  16. #import "YBIBWebImageMediator.h"
  17. #import "YBIBImageData.h"
  18. NS_ASSUME_NONNULL_BEGIN
  19. @interface YBImageBrowser : UIView
  20. /// 数据源数组
  21. @property (nonatomic, copy) NSArray<id<YBIBDataProtocol>> *dataSourceArray;
  22. /// 数据源代理
  23. @property (nonatomic, weak) id<YBImageBrowserDataSource> dataSource;
  24. /// 状态回调代理
  25. @property (nonatomic, weak) id<YBImageBrowserDelegate> delegate;
  26. /**
  27. 展示图片浏览器
  28. @param view 指定父视图(view 的大小不能为 CGSizeZero,但允许变化)
  29. @param containerSize 容器大小(当 view 的大小允许变化时,必须指定确切的 containerSize)
  30. */
  31. - (void)showToView:(UIView *)view containerSize:(CGSize)containerSize;
  32. - (void)showToView:(UIView *)view;
  33. - (void)show;
  34. /**
  35. 隐藏图片浏览器(不建议外部持有图片浏览器重复使用)
  36. */
  37. - (void)hide;
  38. /// 当前页码
  39. @property (nonatomic, assign) NSInteger currentPage;
  40. /// 分页间距
  41. @property (nonatomic, assign) CGFloat distanceBetweenPages;
  42. /// 当前图片浏览器的方向
  43. @property (nonatomic, assign, readonly) UIDeviceOrientation currentOrientation;
  44. /// 图片浏览器支持的方向 (仅当前控制器不支持旋转时有效,否则将跟随控制器旋转)
  45. @property (nonatomic, assign) UIInterfaceOrientationMask supportedOrientations;
  46. /// 是否自动隐藏 id<YBIBImageData> 设置的映射视图,默认为 YES
  47. @property (nonatomic, assign) BOOL autoHideProjectiveView;
  48. /// 是否正在转场
  49. @property (nonatomic, assign, readonly, getter=isTransitioning) BOOL transitioning;
  50. /// 是否正在进行展示过程转场
  51. @property (nonatomic, assign, readonly, getter=isShowTransitioning) BOOL showTransitioning;
  52. /// 是否正在进行隐藏过程转场
  53. @property (nonatomic, assign, readonly, getter=isHideTransitioning) BOOL hideTransitioning;
  54. /// 预加载数量 (默认为 2,低内存设备默认为 0)
  55. @property (nonatomic, assign) NSUInteger preloadCount;
  56. /**
  57. 重载数据,请保证数据源被正确修改
  58. */
  59. - (void)reloadData;
  60. /**
  61. 获取当前展示的数据对象
  62. @return 数据对象
  63. */
  64. - (id<YBIBDataProtocol>)currentData;
  65. /// 是否隐藏状态栏,默认为 YES(该值为 YES 时需要在 info.plist 中添加 View controller-based status bar appearance : NO 才能生效)
  66. @property (nonatomic, assign) BOOL shouldHideStatusBar;
  67. /// 工具视图处理器
  68. /// 赋值可自定义,实现者可以直接用 UIView,或者创建一个中介者管理一系列的 UIView。
  69. /// 内部消息是按照数组下标顺序调度的,所以如果有多个处理器注意添加 UIView 的视图层级。
  70. @property (nonatomic, copy) NSArray<id<YBIBToolViewHandler>> *toolViewHandlers;
  71. /// 默认工具视图处理器
  72. @property (nonatomic, weak, readonly) YBIBToolViewHandler *defaultToolViewHandler;
  73. /// Toast/Loading 处理器 (赋值可自定义)
  74. @property (nonatomic, strong) id<YBIBAuxiliaryViewHandler> auxiliaryViewHandler;
  75. /// 转场实现类 (赋值可自定义)
  76. @property (nonatomic, strong) id<YBIBAnimatedTransition> animatedTransition;
  77. /// 默认转场实现类 (可配置其属性)
  78. @property (nonatomic, weak, readonly) YBIBAnimatedTransition *defaultAnimatedTransition;
  79. /// 图片下载缓存相关的中介者(赋值可自定义)
  80. @property (nonatomic, strong) id<YBIBWebImageMediator> webImageMediator;
  81. /// 核心集合视图
  82. @property (nonatomic, strong, readonly) YBIBCollectionView *collectionView;
  83. @end
  84. NS_ASSUME_NONNULL_END