Crear layouts de ednetworkingón en UICollectionView

introduzca la descripción de la imagen aquí

Necesito este tipo de UICuollectionView. Cada celda tiene una image y una label. La altura y el ancho de la celda dependen del text de esa label.

- (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 networkingColor]; 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); } 

Pero mis células se estrujaron. introduzca la descripción de la imagen aquí

¿Puedes hacerme saber cuál es el problema?

Tal vez escribiste width donde querías height en esta línea:

 [cell setFrame:CGRectMake(cell.frame.origin.x, cell.frame.origin.y, cell.frame.size.width, cell.frame.size.width+f-20+10)];