iOS使用UITableView+UICollectionView实现左右分组

时间:2021-7-9 作者:qvyue

实现效果如下:

iOS使用UITableView+UICollectionView实现左右分组
image.png

左边是桌位类型,右边是具体的桌位类型对应的桌号。
其实有两种实现方式,第一种是UICollectionView实现,左边的分组头就设置UICollectionView的header即可,设置header的frame。之前的同事就是这么实现的。现在发现有点问题,因为collectionView的复用导致滑动的时候左边header会消失的问题。

我的实现是左边UITableView+右边CollectionView的实现即可。然后在scrollViewDidScroll方法处理联动的效果。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if ([scrollView isKindOfClass:UICollectionView.class]) {
        [self.emptySeatTableView setContentOffset:CGPointMake(5, scrollView.contentOffset.y)];
    } else if ([scrollView isKindOfClass:UITableView.class]){
       [self.collectionView setContentOffset:CGPointMake(0, scrollView.contentOffset.y)];
    }
}

计算左边栏分组的行高:

#pragma mark - 计算对应行高
- (CGFloat)heightOfSection:(NSInteger)section {
    
    if (section == self.modelArray.count) {
        // 编辑按钮
        return k_Empty_Header_Edit_Height;
    }
    
    CGFloat h = 0;
    NSInteger numberOfSection = [self.modelArray objectAtIndex:section].tables.count;
    NSInteger i = (numberOfSection + self.numberOfColumn ) / self.numberOfColumn;
//    h = i * (k_Empty_Cell_Height + k_Empty_Cell_Margin) - k_Empty_Cell_Margin + k_Empty_Section_Top + k_Empty_Section_Bottom + 20;
    if(i 

PS:现在还有的一个问题就是滑动左边分组栏的时候会有闪动、抖动的情况,求解为啥呀???怎么解决???

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。