El comportamiento de UICollectionViewFlowLayout no está definido

Tengo una vista de colección configurada como una sola fila horizontal de celdas. Está lanzando el siguiente error de restricción (estoy usando AutoLayout):

El comportamiento de UICollectionViewFlowLayout no está definido porque la altura del elemento debe ser menor que la altura del UICollectionView less los valores de la parte superior e inferior de la sección inserciones, less los valores de parte superior e inferior de los inserciones de contenido.

He buscado en Google y he visto SO, y todos sugieren que se soluciona simplemente anulando los methods UIScrollViewDelegate:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { // iPhone 6+ device width handler CGFloat multiplier = (screenWidth > kNumberOfCellsWidthThreshold) ? 4 : 3; CGFloat size = screenWidth / multiplier; return CGSizeMake(size, size); } - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { return UIEdgeInsetsMake(0, 0, 0, 0); } 

Pero aún no funciona. Parece estar boquiabierto ante el hecho de que la altura de la celda es más alta que su contenedor, aunque estoy colocando la celda en la misma altura que el contenedor. Aquí está el rest del error:

La instancia relevante de UICollectionViewFlowLayout es UICollectionViewFlowLayout: 0x7fa6943e7760, y está adjunta a MyCollectionView: 0x7fa69581f200; baseClass = UICollectionView;

frame = (0 0; 375 98); clipsToBounds = SÍ; autoresize = RM + BM; capa = CALayer: 0x7fa694315a60; contentOffset: {0, 0}; contentSize: {0, 134}

Establecer la celda manualmente en un tamaño drásticamente más pequeño (por ejemplo, size - 50.0 parece funcionar, pero ¿por qué no puedo configurar el tamaño de celda a la misma altura que su contenedor?

Resulta que la pieza que faltaba de mi pregunta fue el hecho de que este UICollectionView está nested dentro de un UITableView . iOS 8 introdujo layoutMargins en lugar de valores de compensación de contenido.

Por esta pregunta: iOS 8 UITableView separador inserción 0 no funciona

Tuve que anular los márgenes de celda de mi vista de tabla que contiene:

 -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { // Remove seperator inset if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { [cell setSeparatorInset:UIEdgeInsetsZero]; } // Prevent the cell from inheriting the Table View's margin settings if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) { [cell setPreservesSuperviewLayoutMargins:NO]; } // Explictly set your cell's layout margins if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { [cell setLayoutMargins:UIEdgeInsetsZero]; } } 

rápido para anular la celda

 override func awakeFromNib() { super.awakeFromNib() self.separatorInset = .zero self.preservesSuperviewLayoutMargins = false self.layoutMargins = .zero }