¿Cómo puedo configurar el ancho de celda de la colección para estirar dinámicamente el ancho del teléfono

¿Cómo puedo configurar la vista de celda de colección para que se extienda dinámicamente al ancho de la pantalla del iphone (por ejemplo, iphone 5s, iphone 6 plus)?

Lo intenté:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { (ResultCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellClass forIndexPath:indexPath]; cell.bounds = CGRectMake(0,0, self.view.bounds.size.width, 150); return cell; } 

Eso no funciona. No veo que el contenido se extienda al lado derecho de la pantalla.

He intentado agregar este método de delegado:

 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { CGSize cellSize; cellSize.width = self.view.bounds.size.width; // body view height cellSize.height = 150; return cellSize; } 

He establecido puntos de interrupción en el método, pero ese método nunca se llama?

Tuve el mismo problema con el mismo caso de uso. Finalmente termine haciendo

 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return CGSizeMake(collectionView.bounds.size.width, 150); } 

Esto cambia el tamaño de cada elemento (celda) de la vista de colección. Por lo tanto, puede cambiar el tamaño de cada celda usando esto. Aquí necesito que el ancho de celda sea el mismo que el de mi UICollectionView, así que pasé el ancho y la altura específica de UICollectionview que deseé. Espero que esto ayude.

Además, no es necesario establecer los límites de celdas en - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath como el tamaño se establece a través de - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath

Asegúrese también de que ha adjuntado los Delegates & DataSources fonts de datos deseados a UICollectionView

El tamaño de las celdas está especificado por el object de layout de la vista de colección. ¿Estás usando un UICollectionViewFlowLayout ? Intente configurar la propiedad itemSize del object de layout o implementar el método de delegado: collectionView:layout:sizeForItemAtIndexPath:

Podrá especificar el tamaño del elemento (celda) en relación con los límites de la vista de la colección allí.

Tenga en count que su vista de colección también debe configurarse para que cambie el tamaño con su controller de vista. Si está utilizando un UICollectionViewController que debe configurarse automáticamente. De lo contrario, tendrá que restringir su vista de colección a los límites de su supervisión.

Actualizar:

Puede establecer la propiedad itemSize del layout directamente en el layout:

 self.layout.itemSize = CGSizeMake(CGRectGetWidth(self.collectionView.bounds), 100); 

o, (mejor si está manejando la rotation o el cambio de tamaño), implemente la llamada de delegado apropiada:

 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return CGSizeMake(CGRectGetWidth(collectionView.bounds), 100); } 

Recomendaría leer los documentos UICollectionView apropiados para familiarizarse más con cómo funcionan las vistas de colección y el layout de su layout:

  • UICollectionViewDelegateFlowLayout

  • UICollectionViewFlowLayout

  • UICollectionView Programming Guide