ExcelView
IOS表格自定义视图,支持XIB布局,支持代码布局,支持锁双向表头。
效果展示
更新日志
-
更新时间2017年02月11日09:48:27 -----ExcelView V1.0.0
-
更新时间2017年02月17日11:17:14 -----ExcelView V1.0.1
添加表格宽度自适应,添加自定义第一行背景色属性和设置表格字体属性
-
更新时间2017年02月27日15:58:07 -----ExcelView V1.0.2
添加表格高度自适应,添加设置单元格最大列宽
-
更新时间2017年02月28日20:23:50 -----ExcelView V1.0.3
添加表格数据添加形式,原有数据添加形式保留,以每行数据为基本单元构造二维数组
-
更新时间2017年03月17日15:22:02 -----ExcelView V1.0.4
部分BUG修改,新增最小列宽属性
-
更新时间2017年03月18日12:17:40 -----ExcelView V1.0.5
新增滚动视图监听Block,滑动到最左侧或者最右侧自定义处理事件,防止有部分滚动视图嵌套表格的需求
-
更新时间2017年04月05日11:20:31 -----ExcelView V1.0.6
版本重大BUG修改,数据过多时会引起异常奔溃
滚动时滚动视图数组不断增大从而引起遍历时间过长滚动缓慢问题(已重新设计方案)
列表先左移再上移会错行问题。
-
更新时间2017年04月05日15:51:24 -----ExcelView V1.0.7
表格BUG修改,Cell复用问题导致的表格刷新,表头和表内容视图错列问题。
Cell值初始化未清空导致的表格刷新滚动视图contentSize不对的问题。
-
更新时间2017年04月10日18:01:46 -----ExcelView V1.0.8
表格BUG修改,Iphone6 Plus手机表格内容视图没有适配的BUG修改
-
更新时间2017年07月11日13:07:59 -----ExcelView V1.0.9
表格BUG修改,当表格滑动到最右侧时偶尔不触发监听事件修改
-
更新时间2017年08月31日17:21:55 -----ExcelView V1.1.0
表格BUG修改,横屏时不能填充整个屏幕修改
API使用说明
self.leftTableDataArray=(NSMutableArray *)@[@"塔城",@"哈密",@"和田",@"阿勒泰",@"克州"];
self.rightTableHeadArray=(NSMutableArray *)@[@"当日收入(万)",@"同比",@"环比",@"当月收入(万)",@"同比",@"环比",@"当年收入(万)",@"同比",@"环比"];
self.excelDataArray=(NSMutableArray *)@[@[@"2.9",@"2%",@"3%",@"3.0",@"4%",@"5%",@"18",@"4.5%",@"6.8%"],@[@"2.9",@"2%",@"3%",@"3.0",@"4%",@"5%",@"18",@"4.5%",@"6.8%"],@[@"2.9",@"2%",@"3%",@"3.0",@"4%",@"5%",@"18",@"4.5%",@"6.8%"],@[@"2.9",@"2%",@"3%",@"3.0",@"4%",@"5%",@"18",@"4.5%",@"6.8%"],@[@"2.9",@"2%",@"3%",@"3.0",@"4%",@"5%",@"18",@"4.5%",@"6.8%"]];
self.allTableDataArray=[NSMutableArray arrayWithCapacity:10];
NSMutableArray *fristDatas=[NSMutableArray arrayWithCapacity:10];
[fristDatas addObject:@"标题"];
for (int i=0; i<22; i++) {
[fristDatas addObject:[NSString stringWithFormat:@"标题%d",i]];
}
[self.allTableDataArray addObject:fristDatas];
for (int i=0; i<99; i++) {
NSMutableArray *rowDatas=[NSMutableArray arrayWithCapacity:10];
[rowDatas addObject:[NSString stringWithFormat:@"标题%d",i]];
for (int j=0; j<22;j++) {
[rowDatas addObject:[NSString stringWithFormat:@"数据%d",j]];
}
[self.allTableDataArray addObject:rowDatas];
}
//代码方式添加
ExcelView *excelView=[[ExcelView alloc]initWithFrame:CGRectMake(0, 280, UIScreenWidth, 270)];
excelView.topTableHeadDatas=self.rightTableHeadArray;
excelView.leftTabHeadDatas=self.leftTableDataArray;
excelView.tableDatas=self.excelDataArray;
excelView.isLockFristColumn=YES;
excelView.isLockFristRow=YES;
excelView.isColumnTitlte=YES;
excelView.columnTitlte=@"地区";
[excelView show];
[self.view addSubview:excelView];
//xib布局添加方式
self.mExcelView.allTableDatas=self.allTableDataArray;
self.mExcelView.isLockFristColumn=YES;
self.mExcelView.isLockFristRow=YES;
self.mExcelView.isColumnTitlte=YES;
self.mExcelView.columnTitlte=@"地区";
self.mExcelView.columnMaxWidth=200;
self.mExcelView.columnMinWidth=100;
[self.mExcelView showWithLeftBlock:^(CGPoint contentOffset) {
NSLog(@"滚动到了最左侧!");
NSLog(@"偏移量:%f",contentOffset.x);
} AndWithRigthBlock:^(CGPoint contentOffset) {
NSLog(@"滚动到了最右侧!");
NSLog(@"偏移量:%f",contentOffset.x);
}];
目前支持可自定义属性
/**
是否锁定第一列
*/
@property BOOL isLockFristColumn;
/**
是否锁定第一行
*/
@property BOOL isLockFristRow;
/**
是否存在第一列列标题
*/
@property BOOL isColumnTitlte;
/**
列标题名称(表格左上角数据)
*/
@property(nonatomic,copy) NSString *columnTitlte;
/**
第一行表头数据(不包括表格左上角数据,只接收字符串)
*/
@property(nonatomic,retain) NSMutableArray *topTableHeadDatas;
/**
第一列表头数据(不包括表格左上角数据,只接收字符串)
*/
@property(nonatomic,retain) NSMutableArray *leftTabHeadDatas;
/**
表格数据(2维数组,不包括第一列和第一行数据,只接收字符串,例:@[@[],@[],....])
*/
@property(nonatomic,retain) NSMutableArray *tableDatas;
/**
表格数据(2维数组,每一行为一个子单元,只接受字符串,例:@[@[],@[],....]
设置该属性之后,columnTitlte、topTableHeadDatas、leftTabHeadDatas、tableDatas将被重置。
*/
@property(nonatomic,retain) NSMutableArray *allTableDatas;
/**
设置字体
*/
@property(nonatomic,retain) UIFont *textFont;
/**
第一行背景颜色
*/
@property(nonatomic,retain) UIColor *fristRowBackGround;
/**
列最大宽度
*/
@property(nonatomic) CGFloat columnMaxWidth;
/**
列最小宽度
*/
@property(nonatomic) CGFloat columnMinWidth;
/**
显示,必须调用该方法,视图才会展现
*/
-(void)show;
/**
滚动视图滑动到最左侧的Block
*/
@property(nonatomic,copy) ScrollViewToLeftBlock mLeftblock;
/**
滚动视图滑动到最右侧的Block
*/
@property(nonatomic,copy) ScrollViewToRightBlock mRightblock;
/**
显示,并加入滚动视图监听回调
@param leftblock 滚动视图滑动到最左侧的Block
@param rightblock 滚动视图滑动到最右侧的Block
*/
-(void)showWithLeftBlock:(ScrollViewToLeftBlock)leftblock AndWithRigthBlock:(ScrollViewToRightBlock) rightblock;
使用说明
- 直接复制项目根目录里ExcelView文件夹到你的项目中
- 在需要用的地方引入 #import "ExcelView.h" 头文件,或者直接在PCH文件中引入
问题反馈
- 联系方式:QQ(2318560278)
- 技术交流群:QQ(264587303)
- Demo作者:郭翰林