今天有个需求需要实现Excel的效果:如图
image.png
提醒
这只是一个demo,没有考虑那么多需求,也只是提供一个学习的思路。有具体的需求可以修改代码,避免重复造轮子。
实现的思路
顶部的Header 最左侧[左上头]放的是一个UILabel,后面就放的是一个UICollectionView。
头部下面 头部下面整体是一个UITableView,然后每个Cell的Header部分也是UlLabel,后面也是一个UICollectionView
难的部分
左右滚动 左右滚动的时候左边Header和顶部Header最左边固定,其他部分跟随滚动
上下滚动 顶部Header固定,其他部分跟随滚动
滚动部分核心代码
整个滚动Demo就这部分难一点,其他的都很简单,看看都懂的。
代码语言:javascript复制- (void)scrollViewDidScroll:(UIScrollView*)scrollView
{
if ([scrollView isKindOfClass:[UICollectionView class]]) {
if (scrollView.contentOffset.y != 0) {
scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, 0);
}
NSLog(@"scroll %f",scrollView.contentOffset.x);
self.topExcelCollectionView.contentOffset = scrollView.contentOffset;
for (ExcelTableCell* cell in self.excelTableView.visibleCells) {
for (UIView *view in cell.contentView.subviews) {
if ([view isKindOfClass:[UICollectionView class]]) {
UICollectionView *collectionView = (UICollectionView *)view;
collectionView.contentOffset = scrollView.contentOffset;
self.cacheContentOffset = CGPointMake(scrollView.contentOffset.x, scrollView.contentOffset.y);
}
}
}
}else{
self.topExcelCollectionView.contentOffset = self.cacheContentOffset;
for (ExcelTableCell* cell in self.excelTableView.visibleCells) {
for (UIView *view in cell.contentView.subviews) {
if ([view isKindOfClass:[UICollectionView class]]) {
UICollectionView *collectionView = (UICollectionView *)view;
collectionView.contentOffset = self.cacheContentOffset;
}
}
}
}
}
Demo 下载地址