Cómo aplicar diferentes contenidoInset solo para celdas de contenido pero no para un encabezado en UICollectionView

Utilizo el método insetForSectionAtIndex para configurar contentInset para una sección en la vista de mi colección y no quiero aplicar ese recuadro a un encabezado de la sección. Necesito que el ancho del encabezado sea tan ancho como la pantalla.

ConentInset

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets { if section == 1 { return UIEdgeInsets(top: 0, left: 15, bottom: 0, right: 15) } return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) } 

Encabezamiento

 override func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView { let header = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: opsMainDescriptionSegmentedControlCellId, forIndexPath: indexPath) as! MyHeader return header } 

Solo tuve que hacer exactamente lo mismo en uno de mis proyectos.

La solución que aplicé:

En Storyboard, mi vista de colección ocupa la pantalla completa con restricciones de layout automático.

En viewDidLoad:

 collectionView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) 

Configuré el delegado de collectionView en mí mismo y también me conformo con el

UICollectionViewDelegateFlowLayout protocolo.

A continuación, tiene acceso al método que utilizó cuando devuelva otros UIEdgeInsets

 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { return UIEdgeInsets(top: 15, left: 20, bottom: 15, right: 20) } 

y funcionó para mí.

Vea cómo se veía al final.

introduzca la descripción de la imagen aquí

Espero que esto pueda ayudar a otros.

No puedes hacer esto. UICollectionViews encabezados UICollectionViews deben ser tan anchos como UICollectionView . Si desea que el encabezado sea más corto (ancho) que el UICollectionView , mi sugerencia es usar una UIView separada dentro del encabezado y establecer el encabezado para borrar. De esta manera, aparecerá que es más corto que el ancho de UICollectionView .