ios - simple - uicollectionview programmatically swift



UICollectionView: agregar espacio entre el encabezado y los elementos (2)

Básicamente, se está hablando de agregar un margen superior a la sección de vista de colección, para eso debería configurar el recuadro superior para la sección. Para hacerlo en código, implementa insetForSectionAtIndex :

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
    return UIEdgeInsets(top: 10.0, left: 1.0, bottom: 1.0, right: 1.0)
}

Si no desea implementar el insetForSectionAtIndex , también podría hacer algo como esto en un método apropiado, por ejemplo, viewDidLoad :

let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
layout.sectionInset = UIEdgeInsets(top: 10.0, left: 1.0, bottom: 1.0, right: 1.0)

En Interface Builder, seleccione la vista de colección y cambie el valor para Inserciones de sección -> Arriba como se muestra en la siguiente imagen:

NOTA : Esto solo funciona si está utilizando Diseño de flujo.

https://src-bin.com

Quiero agregar un poco de espacio entre mi encabezado y los elementos reales, que actualmente tienen este aspecto:

func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
    // Create header
    switch kind{
        case UICollectionElementKindSectionHeader:
            let headerView = iconCollectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: "customIconHeaderView", forIndexPath: indexPath) as! CustonIconHeaderView
            headerView.setUp() //add whatever into the view
            return headerView
        default:
            assert(false, "Unexpected element kind")
    }

}

Answer #1

Una forma de hacerlo es aumentar la altura del contenedor del encabezado usando

collectionView(_:layout:referenceSizeForHeaderInSection:)

Ejemplo:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
    return CGSize(width: 0, height: yourHeaderContentHeight + yourHeaderMarginToCell)
}

Editar:

func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
    let headerView = collectionView.dequeueReusableSupplementaryViewOfKind(UICollectionElementKindSectionHeader, withReuseIdentifier: "YourID", forIndexPath: indexPath)

    let yourCustomView = UIView(frame: CGRect(x: 0, y: 0, width: yourHeaderWidth, height: yourHeaderHeight))

    headerView.addSubview(yourCustomView)

    return headerView
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
    return CGSize(width: yourHeaderWidth, height: yourHeaderHeight + yourHeaderMargin)
}




uicollectionview