当前位置: 首页 > news >正文

JXCategoryView的使用总结

一、初始化

-(JXCategoryTitleView *)categoryView{if (!_categoryView) {_categoryView = [[JXCategoryTitleView alloc] init];_categoryView.delegate = self;_categoryView.titleDataSource = self;_categoryView.averageCellSpacingEnabled = NO; //是否平均分配项目之间的间距_categoryView.contentEdgeInsetLeft = 24; //靠左显示的边距_categoryView.titleLabelVerticalOffset = -5; //标题向上偏移_categoryView.cellSpacing = 32; //固定分类项之前的间距_categoryView.titles = @[];_categoryView.defaultSelectedIndex = 0; //默认选中_categoryView.titleColor = RGBA(119, 119, 119, 1);           //默认文字颜色_categoryView.titleSelectedColor = RGBA(51, 51, 51, 1);   //文字选择颜色_categoryView.backgroundColor = [UIColor clearColor];_categoryView.titleFont = AppFont(16);_categoryView.titleSelectedFont = AppBoldFont(16);//底部指示器JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init];lineView.verticalMargin = 10; //默认底部,越大越向上偏移lineView.indicatorHeight = 3; //指示器高度lineView.indicatorCornerRadius = 0; //是否倒圆角lineView.indicatorColor = RGBA(72, 142, 255, 1); //指示器颜色lineView.indicatorWidth = 24; //指示器宽度lineView.scrollStyle = JXCategoryIndicatorScrollStyleSameAsUserScroll; //指示器滚动样式_categoryView.indicators = @[lineView]; }return _categoryView;
}

二、关联listContainerView

  • listContainerView 创建
-(JXCategoryListContainerView *)listContainerView{if (!_listContainerView) {_listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self];_listContainerView.scrollView.scrollEnabled = YES;}return _listContainerView;
}
  • 与categoryView 建立关联
self.categoryView.listContainer = self.listContainerView;
  • 实现listContainerView 代理

//子控制器数组
- (NSArray<__kindof UIViewController *> *)controllers{return @[self.VC1,self.VC2,];
}#pragma mark - JXCategoryListContainerViewDelegate -
- (id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{__kindof UIViewController *vc  = self.controllers[index];return vc;
}
- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView {return self.controllers.count;
}//定义scrollerview处理手势冲突
- (Class)scrollViewClassInlistContainerView:(JXCategoryListContainerView *)listContainerView{return [ServiceScrollView class];
}

三、titles 重载

可以在初始化时指定titles属性赋值, 如果需要动态显示titles, 则可以在处理后,通过 reloadData 进行重载

  • 初始化时指定
_categoryView.titles = @[@"项目1",@"项目2"];
  • 动态处理
NSArray *titles;
if (xxx) {titles = @[@"项目1",@"项目2"];
}else {titles = @[@"礼物1",@"礼物2"];
}
_categoryView.titles = titles;
[_categoryView reloadData];

四、设置指定项被选中

[self.categoryView selectItemAtIndex:0];

五、代理方法

#pragma mark - JXCategoryViewDelegate -//点击选中的情况才会调用该方法
- (void)categoryView:(JXCategoryBaseView *)categoryView didClickSelectedItemAtIndex:(NSInteger)index {}

六、listContentView 需实现 listView 方法


@protocol JXCategoryListContentViewDelegate <NSObject>/**如果列表是VC,就返回VC.view如果列表是View,就返回View自己@return 返回列表视图*/
- (UIView *)listView;@optional/**可选实现,列表将要显示的时候调用*/
- (void)listWillAppear;/**可选实现,列表显示的时候调用*/
- (void)listDidAppear;/**可选实现,列表将要消失的时候调用*/
- (void)listWillDisappear;.....

根据协议声明来看, listView方法需要协议的实现者必须 实现才可以。 因为它是 @required (不指定,则为默认)声明的

#pragma mark - JXCategoryListContainerViewDelegate -
- (id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{__kindof UIViewController *vc  = self.controllers[index];return vc;
}

- (id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index 这个回调需要返回实现了 JXCategoryListContentViewDelegate 的对象(一般是viewController)

@implementation MyContentViewController //实现 JXCategoryListContentViewDelegate 的代理方法
- (UIView *)listView{return self.view;
}@end
http://www.lryc.cn/news/385579.html

相关文章:

  • Centos9 安装VBox增强功能问题
  • 【JVM】Java虚拟机运行时数据分区介绍
  • 大数据面试题之Kafka(2)
  • 前端面试题(基础篇十一)
  • 【论文阅读】Answering Label-Constrained Reachability Queries via Reduction Techniques
  • Git Flow 工作流学习要点
  • blender 快捷键 常见问题
  • HTTP详解:TCP三次握手和四次挥手
  • 详解HTTP:有了HTTP,为何需要WebSocket?
  • Spring Boot 启动流程是怎么样的
  • 【学习笔记】数据结构(三)
  • 学习python笔记:10,requests,enumerate,numpy.array
  • 经典神经网络(13)GPT-1、GPT-2原理及nanoGPT源码分析(GPT-2)
  • MySQL库与表的操作
  • TTS 语音合成技术学习
  • 小公司做自动化的困境
  • 基于pytorch框架的手写数字识别(保姆级教学)
  • 注意力机制在大语言模型中的应用
  • qt 实现对字体高亮处理原理
  • SAP中通过财务科目确定分析功能来定位解决BILLING问题实例
  • 充电站,正在杀死加油站
  • 哪个牌子的超声波清洗机好?四样超卓超声波清洗机独具特色!
  • vue3中若v-model绑定的响应字段出现三级,该如何实现rules验证规则
  • Docker-Compose一键部署项目
  • 【C++】相机标定源码笔记-线激光点云处理工具类
  • 解决Transformer根本缺陷,所有大模型都能获得巨大改进
  • 如何排查Java应用的死锁
  • JS面试题1
  • Linux网络 - 再谈、详谈UDP和TCP协议
  • el-form重置后input无法输入问题