CGXVerticalMenuCategoryView.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. //
  2. // CGXVerticalMenuView.h
  3. // CGXVerticalMenuView-OC
  4. //
  5. // Created by CGX on 2018/05/01.
  6. // Copyright © 2019 CGX. All rights reserved.
  7. //
  8. #import "CGXVerticalMenuCustomBaseView.h"
  9. #import "CGXVerticalMenuCategoryListModel.h"
  10. #import "CGXVerticalMenuTitleView.h"
  11. #import "CGXVerticalMenuIndicatorLineView.h"
  12. #import "CGXVerticalMenuIndicatorBackgroundView.h"
  13. #import "CGXVerticalMenuCollectionView.h"
  14. #import "CGXVerticalMenuContainerView.h"
  15. NS_ASSUME_NONNULL_BEGIN
  16. @class CGXVerticalMenuCategoryView;
  17. @protocol CGXVerticalMenuCategoryViewDataSouce <NSObject>
  18. @optional
  19. /** 如果你需要自定义cell样式,请在实现此代理方法返回你的自定义cell的class。 */
  20. - (Class)verticalMenuViewCustomCollectionViewCellClass;
  21. /** 如果你需要自定义cell样式,请在实现此代理方法返回你的自定义cell的Nib。 */
  22. - (Class)verticalMenuViewCustomCollectionViewCellNib;
  23. /** 右侧自定义cell样式
  24. @param categoryView categoryView description
  25. @param row 选中的row
  26. */
  27. - (UICollectionViewCell *)verticalMenuView:(CGXVerticalMenuCategoryView *)categoryView ListView:(CGXVerticalMenuCollectionView *)listView cellForItemAtIndexPath:(NSIndexPath *)indexPath listViewInRow:(NSInteger)row;
  28. /** 右侧头分区样式
  29. @param categoryView categoryView description
  30. @param row 选中的row
  31. */
  32. - (UICollectionReusableView *)verticalMenuView:(CGXVerticalMenuCategoryView *)categoryView ListView:(CGXVerticalMenuCollectionView *)listView KindHeadAtIndexPath:(NSIndexPath *)indexPath listViewInRow:(NSInteger)row;
  33. /** 右侧脚分区样式
  34. @param categoryView categoryView description
  35. @param row 选中的row
  36. */
  37. - (UICollectionReusableView *)verticalMenuView:(CGXVerticalMenuCategoryView *)categoryView ListView:(CGXVerticalMenuCollectionView *)listView KindFootAtIndexPath:(NSIndexPath *)indexPath listViewInRow:(NSInteger)row;
  38. /**
  39. 每个分区背景颜色 默认背景色
  40. 实现此代理时 CGXVerticalMenuCollectionSectionModel 内的配置sectionColor无效
  41. */
  42. - (UIColor *)verticalMenuView:(CGXVerticalMenuCategoryView *)categoryView BackgroundColorForSection:(NSInteger)section;
  43. /**
  44. 每个分区的高度 不实现 默认宽高相等
  45. */
  46. - (CGFloat)verticalMenuView:(CGXVerticalMenuCategoryView *)categoryView sizeForItemAtSection:(NSInteger)section ItemWidth:(CGFloat)itemWidth;
  47. @end
  48. @protocol CGXVerticalMenuCategoryViewDelegate <NSObject>
  49. @optional
  50. /** 左侧点击
  51. @param categoryView categoryView description
  52. @param index 选中的index
  53. */
  54. - (void)verticalMenuView:(CGXVerticalMenuCategoryView *)categoryView didSelectedItemAtIndex:(NSInteger)index;
  55. /** 右侧点击
  56. @param categoryView categoryView description
  57. @param indexPath 选中的indexPath
  58. */
  59. - (void)verticalMenuView:(CGXVerticalMenuCategoryView *)categoryView didSelectedItemDetailsAtIndexPath:(NSIndexPath *)indexPath;
  60. /**
  61. 背景图点击事件
  62. @param categoryView categoryView description
  63. @param indexPath 点击背景图的indexPath
  64. */
  65. - (void)verticalMenuView:(CGXVerticalMenuCategoryView *)categoryView didSelectDecorationViewAtIndexPath:(NSIndexPath *)indexPath;
  66. /** 将要显示
  67. @param categoryView categoryView description
  68. @param row 选中的row
  69. */
  70. - (void)verticalMenuView:(CGXVerticalMenuCategoryView *)categoryView willDisplayCellAtRow:(NSInteger)row;
  71. /** 将要消失
  72. @param categoryView categoryView description
  73. @param row 选中的row
  74. */
  75. - (void)verticalMenuView:(CGXVerticalMenuCategoryView *)categoryView didEndDisplayingCellAtRow:(NSInteger)row;
  76. /** 将要显示的右侧分区
  77. */
  78. - (void)verticalMenuView:(CGXVerticalMenuCategoryView *)categoryView willDisplaViewElementKind:(NSString *)elementKind
  79. atIndexPath:(NSIndexPath *)indexPath;
  80. /** 将要消失的右侧分区
  81. */
  82. - (void)verticalMenuView:(CGXVerticalMenuCategoryView *)categoryView didEndDisplayingElementKind:(NSString *)elementKind
  83. atIndexPath:(NSIndexPath *)indexPath;
  84. /** 右侧自定义下拉view
  85. @param categoryView categoryView description
  86. @param scrollView 右侧滚动的view
  87. @param row 选中的row 左侧选中的下标
  88. */
  89. - (void)verticalMenuView:(CGXVerticalMenuCategoryView *)categoryView
  90. RefreshScrollView:(UIScrollView *)scrollView
  91. listViewInRow:(NSInteger)row;
  92. @end
  93. @interface CGXVerticalMenuCategoryView : CGXVerticalMenuCustomBaseView
  94. @property (nonatomic, weak) id<CGXVerticalMenuCategoryViewDelegate> delegate;
  95. @property (nonatomic, weak) id<CGXVerticalMenuCategoryViewDataSouce> dataSouce;
  96. @property (nonatomic, strong) NSArray <UIView<CGXCategoryListIndicatorProtocol> *> *indicators;
  97. @property (nonatomic , strong,readonly) NSMutableArray <CGXVerticalMenuCategoryListModel *> *dataArray;
  98. /*
  99. 初始化使用
  100. */
  101. - (void)updateListWithDataArray:(NSMutableArray<CGXVerticalMenuCategoryListModel *> *)dataArray;
  102. /*
  103. 更新某个下标数据使用
  104. */
  105. - (void)updateListWistAtIndex:(NSInteger)index ItemModel:(CGXVerticalMenuCategoryListModel *)itemModel;
  106. - (void)reloadData;
  107. /* 左侧背景 */
  108. @property (nonatomic , strong) UIColor *leftBgColor;
  109. /* 右侧背景 */
  110. @property (nonatomic , strong) UIColor *rightBgColor;
  111. /* 左侧默认宽度100 */
  112. @property (nonatomic, assign) CGFloat titleWidth;
  113. /* 选中目标index */
  114. @property (nonatomic , assign,readonly) NSInteger currentInteger;
  115. // 右侧滚动左侧间距 默认0
  116. @property (nonatomic, assign) CGFloat spaceLeft;
  117. // 右侧滚动右侧侧间距 默认0
  118. @property (nonatomic, assign) CGFloat spaceRight;
  119. /**
  120. 右侧手动翻页滚动动画 默认NO
  121. 需要实现
  122. - (void)refreshLoadData;
  123. - (void)refreshMoreLoadData;
  124. */
  125. @property (nonatomic, assign) BOOL scrollAnimated;
  126. /**
  127. 选中目标index的item
  128. @param index 目标index
  129. */
  130. - (void)selectItemAtIndex:(NSInteger)index;
  131. /**
  132. 上一页
  133. */
  134. - (void)refreshLoadData;
  135. /**
  136. 下一页
  137. */
  138. - (void)refreshMoreLoadData;
  139. @end
  140. NS_ASSUME_NONNULL_END