IT评测·应用市场-qidao123.com技术社区

标题: JXCategoryView的使用总结 [打印本页]

作者: 伤心客    时间: 2024-6-26 19:50
标题: JXCategoryView的使用总结
一、初始化
  1. -(JXCategoryTitleView *)categoryView{
  2.     if (!_categoryView) {
  3.         _categoryView = [[JXCategoryTitleView alloc] init];
  4.         _categoryView.delegate = self;
  5.         _categoryView.titleDataSource = self;
  6.         _categoryView.averageCellSpacingEnabled = NO; //是否平均分配项目之间的间距
  7.         _categoryView.contentEdgeInsetLeft = 24; //靠左显示的边距
  8.         _categoryView.titleLabelVerticalOffset = -5; //标题向上偏移
  9.         _categoryView.cellSpacing = 32; //固定分类项之前的间距
  10.         _categoryView.titles = @[];
  11.         _categoryView.defaultSelectedIndex = 0; //默认选中
  12.         _categoryView.titleColor = RGBA(119, 119, 119, 1);           //默认文字颜色
  13.         _categoryView.titleSelectedColor = RGBA(51, 51, 51, 1);   //文字选择颜色
  14.         _categoryView.backgroundColor = [UIColor clearColor];
  15.         _categoryView.titleFont = AppFont(16);
  16.         _categoryView.titleSelectedFont = AppBoldFont(16);
  17.         
  18.         //底部指示器
  19.         JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init];
  20.         lineView.verticalMargin = 10; //默认底部,越大越向上偏移
  21.         lineView.indicatorHeight = 3; //指示器高度
  22.         lineView.indicatorCornerRadius = 0; //是否倒圆角
  23.         lineView.indicatorColor = RGBA(72, 142, 255, 1); //指示器颜色
  24.         lineView.indicatorWidth = 24; //指示器宽度
  25.         lineView.scrollStyle = JXCategoryIndicatorScrollStyleSameAsUserScroll; //指示器滚动样式
  26.         _categoryView.indicators = @[lineView];
  27.    
  28.     }
  29.     return _categoryView;
  30. }
复制代码
二、关联listContainerView

  1. -(JXCategoryListContainerView *)listContainerView{
  2.     if (!_listContainerView) {
  3.         _listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self];
  4.         _listContainerView.scrollView.scrollEnabled = YES;
  5.     }
  6.     return _listContainerView;
  7. }
复制代码
  1. self.categoryView.listContainer = self.listContainerView;
复制代码
  1. //子控制器数组
  2. - (NSArray<__kindof UIViewController *> *)controllers{
  3.     return @[
  4.         self.VC1,
  5.         self.VC2,
  6.     ];
  7. }
  8. #pragma mark - JXCategoryListContainerViewDelegate -
  9. - (id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{
  10.     __kindof UIViewController *vc  = self.controllers[index];
  11.     return vc;
  12. }
  13. - (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView {
  14.     return self.controllers.count;
  15. }
  16. //定义scrollerview处理手势冲突
  17. - (Class)scrollViewClassInlistContainerView:(JXCategoryListContainerView *)listContainerView{
  18.     return [ServiceScrollView class];
  19. }
复制代码
三、titles 重载

可以在初始化时指定titles属性赋值, 如果需要动态显示titles, 则可以在处置惩罚后,通过 reloadData 举行重载
  1. _categoryView.titles = @[@"项目1",@"项目2"];
复制代码
  1. NSArray *titles;
  2. if (xxx) {
  3.         titles = @[@"项目1",@"项目2"];
  4. }else {
  5.         titles = @[@"礼物1",@"礼物2"];
  6. }
  7. _categoryView.titles = titles;
  8. [_categoryView reloadData];
复制代码
四、设置指定项被选中
  1. [self.categoryView selectItemAtIndex:0];
复制代码
五、代理方法
  1. #pragma mark - JXCategoryViewDelegate -
  2. //点击选中的情况才会调用该方法
  3. - (void)categoryView:(JXCategoryBaseView *)categoryView didClickSelectedItemAtIndex:(NSInteger)index {
  4.    
  5. }
复制代码
六、listContentView 需实现 listView 方法
  1. @protocol JXCategoryListContentViewDelegate <NSObject>
  2. /**
  3. 如果列表是VC,就返回VC.view
  4. 如果列表是View,就返回View自己
  5. @return 返回列表视图
  6. */
  7. - (UIView *)listView;
  8. @optional
  9. /**
  10. 可选实现,列表将要显示的时候调用
  11. */
  12. - (void)listWillAppear;
  13. /**
  14. 可选实现,列表显示的时候调用
  15. */
  16. - (void)listDidAppear;
  17. /**
  18. 可选实现,列表将要消失的时候调用
  19. */
  20. - (void)listWillDisappear;
  21. .....
复制代码
根据协议声明来看, listView方法需要协议的实现者必须 实现才可以。 由于它是 @required (不指定,则为默认)声明的
  1. #pragma mark - JXCategoryListContainerViewDelegate -
  2. - (id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{
  3.     __kindof UIViewController *vc  = self.controllers[index];
  4.     return vc;
  5. }
复制代码
- (id)listContainerViewJXCategoryListContainerView *)listContainerView initListForIndexNSInteger)index  这个回调需要返回实现了 JXCategoryListContentViewDelegate 的对象(一样平常是viewController)
  1. @implementation MyContentViewController
  2. //实现 JXCategoryListContentViewDelegate 的代理方法
  3. - (UIView *)listView{
  4.     return self.view;
  5. }
  6. @end
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4