UICollectionView-计算高度和数据处理

UICollectionView高度计算

思路:collectionView高度需要根据内容去计算=>有数据了再计算高度。(collectionView不需要滚动)

①高度计算

拿到数据源之后计算:

static NSString * const ID = @"cell";
static NSInteger const cols = 4;
static CGFloat const margin = 1;
#define itemWH (SCREEN_WIDTH - (cols - 1) * margin) / cols
// 处理数据
[self resloveData];
//计算collectionView高度 = rows * itemWH
//Rows = (count - 1) / cols + 1 NSInteger count = self.squareItems.count;
NSInteger rows = (count - 1) / cols + 1;
// 设置collectioView高度
 self.collectionView.height = rows * itemWH;
 self.tableView.tableFooterView = self.collectionView;
// 设置tableView滚动范围:自己计算
//self.tableView.contentSize = CGSizeMake(0, CGRectGetMaxY(self.collectionView.frame));
// 刷新表格
[self.collectionView reloadData];

②数据处理(判断缺几个)

#pragma mark - 处理请求完成数据
- (void)resloveData
{
    // 判断下缺几个
    // 3 % 4 = 3 cols - 3 = 1
    // 5 % 4 = 1 cols - 1 = 3
    NSInteger count = self.squareItems.count;
    NSInteger exter = count % cols;
    if (exter) {
        exter = cols - exter;
        for (int i = 0; i < exter; i++) {
            HKSquareItem *item = [[HKSquareItem alloc] init];
            [self.squareItems addObject:item];
        }
    }
    if ([self.squareItems containsObject:@[]]) {
        [self.squareItems removeObject:@[]];
    }
}

效果图:

 

 

 

 

 

posted @ 2018-12-05 09:47  淡然微笑_Steven  阅读(3192)  评论(0编辑  收藏  举报