5

在此处输入图像描述

我需要这种类型的 UICuollectionView。每个单元格都有一个图像和一个标签。单元格的高度和宽度取决于该标签的文本。

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:          (NSIndexPath *)indexPath {

   CollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"kCellID"  forIndexPath:indexPath];
if(cell == nil){
    cell = [[[NSBundle mainBundle] loadNibNamed:@"CollectionViewCell" owner:self options:nil] lastObject];
}
cell.backgroundColor = [UIColor redColor];
cell.image.image = [UIImage imageNamed:[self.arrPhotos objectAtIndex:indexPath.row]];
[cell.image setFrame:CGRectMake(cell.image.frame.origin.x, cell.image.frame.origin.y, cell.image.frame.size.width,100)];
float f = [self getHeightCalculateForTheText:[arrText objectAtIndex:indexPath.row]  andwidth:96];
[cell.label setFrame:CGRectMake(0,100,96, f)];
cell.label.text = [arrText objectAtIndex:indexPath.row];
[cell setFrame:CGRectMake(cell.frame.origin.x, cell.frame.origin.y, cell.frame.size.width, cell.frame.size.width+f-20+10)];
return cell;
}

- (CGSize) blockSizeForItemAtIndexPath:(NSIndexPath *)indexPath {
if(indexPath.row >= self.arrPhotos.count)
    NSLog(@"Asking for index paths of non-existant cells!! %d from %d cells", indexPath.row, self.arrPhotos.count);
float f = [self getHeightCalculateForTheText:[arrText objectAtIndex:indexPath.row]  andwidth:96];

if (f > 0 && f< 30)
    return CGSizeMake(1, 2);
else if (f > 30 && f< 60)
    return CGSizeMake(1, 3);
else if (f > 60 && f< 90)
    return CGSizeMake(1, 4);
else if (f > 90 && f< 120)
    return CGSizeMake(1, 5);
else if (f > 120 && f< 150)
    return CGSizeMake(1, 6);
else if(f > 150 && f< 180)
    return CGSizeMake(1, 7);

return CGSizeMake(1,1);
}

但是我的细胞被挤压了。在此处输入图像描述

你能告诉我问题是什么吗?

4

1 回答 1

0

也许您在此行中输入width了您想要的位置:height

[cell setFrame:CGRectMake(cell.frame.origin.x, 
                          cell.frame.origin.y, 
                          cell.frame.size.width, 
                          cell.frame.size.width+f-20+10)];
于 2013-04-19T07:47:14.293 回答