Anchura de celda dinámica de UICollectionView según el ancho de la label

Tengo una UICollectionView, que carga celdas de celdas reutilizables, que contiene tags. Una matriz proporciona contenido para esa label. Puedo cambiar el tamaño del ancho de la label según el ancho del contenido fácilmente con sizeToFit. Pero no puedo hacer que la celda se ajuste a la label.

Aquí está el código

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. arrayOfStats = @[@"time:",@"2",@"items:",@"10",@"difficulty:",@"hard",@"category:",@"main"]; } - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection: (NSInteger)section{ return [arrayOfStats count]; } - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{ return CGSizeMake(??????????); } - (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{ return 1; } - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ Cell *cell = (Cell *) [collectionView dequeueReusableCellWithReuseIdentifier:@"qw" forIndexPath:indexPath]; cell.myLabel.text = [NSString stringWithFormat:@"%@",[arrayOfStats objectAtIndex:indexPath.item]]; // make label width depend on text width [cell.myLabel sizeToFit]; //get the width and height of the label (CGSize contains two parameters: width and height) CGSize labelSize = cell.myLbale.frame.size; NSLog(@"\n width = %f height = %f", labelSize.width,labelSize.height); return cell; } 

En sizeForItemAtIndexPath devuelve el tamaño del text

 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{ return [(NSString*)[arrayOfStats objectAtIndex:indexPath.row] sizeWithAttributes:NULL]; } 

Finalizar el código a continuación puede estar dando CGSize muy corto.

 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{ NSString *testString = @"SOME TEXT"; CGSize calCulateSizze =[testString sizeWithAttributes:NULL]; calCulateSizze.width = calCulateSizze.width; calCulateSizze.height = calCulateSizze.height; return calCulateSizze; } 

En Swift 3

 let size = (arrayOfStats[indexPath.row] as NSString).size(attributes: nil)