uicollectionviewcontroller ios ios6 uicollectionview uicollectionreusableview

ios - uicollectionviewcontroller - ¿Cómo crear un pie de página "adhesivo" para un UICollectionView?



uicollectionviewcell indexpath (2)

¿Cuál es el mejor método para proporcionar un pie de página para un UICollectionView que se "adhiere" al UICollectionView inferior de la pantalla en una página determinada? Asuma que UICollectionView es pantalla completa y solo tiene una sección.

Actualmente estoy proporcionando un objeto UICollectionReusableView en collectionView:viewForSupplementaryElementOfKind:atIndexPath: pero (como era de esperar) cuando el contenido de mi colección excede los límites de esta pantalla, el pie de página se saca de la pantalla.

Supongo que la clave es una Vista de Decoración , pero no puedo encontrar ejemplos de buen código (que no sea IB) sobre cómo funcionan, y la documentación de Apple es, en mi opinión, poco clara sobre este tema en particular.

Actualizar re: Vistas de decoración

Después de construir y experimentar con una Vista de decoración ( usando este tutorial ), llegué a algunas limitaciones, a saber, que en realidad no hay ninguna devolución de llamada entre el objeto Decoration View y su objeto controlador UICollectionViewController ( Decoration View está administrado por un objeto UICollectionViewLayout , no el objeto UICollectionViewController ). Parece que Apple se tomaba muy en serio que Decoration Views se limitara a los adornos visuales, y no a los datos (aunque obviamente podrías hackear esto).

Entonces, la solución "correcta" todavía se me escapa, pero mientras tanto, acabo de crear un objeto UIView estático y lo estoy gestionando desde mi objeto UICollectionViewController . Funciona bien, pero se siente mal.

Actualización sobre: ​​VARIOS ENCABEZADOS

En los últimos meses, he trabajado en problemas similares en varios proyectos, y recientemente encontré una solución para HEADERS pegajosos. Supongo que lo mismo se aplicaría a los pies de página, pero no lo he probado.

Detalles sobre los encabezados aquí:

Cómo hacer flotar la vista suplementaria en UICollectionView como lo hacen los encabezados de sección en el estilo sencillo de UITableView

La implementación es bastante pesada, pero parece funcionar bien en la mayoría de las circunstancias.

Si no hay más actividad sobre esta cuestión pronto, cerraré como un duplicado y señalaré el artículo anterior.


Básicamente lo que necesita hacer es proporcionar una subclase UICollectionViewLayout personalizada que se invalide a sí misma cuando los límites cambian (cuando la vista desplaza los límites cambian). Y luego proporciona UICollectionViewLayoutAttributes para la vista suplementaria donde se actualiza el centro para abarcar los límites actuales de la vista de colección (arriba, abajo, izquierda, derecha, lo que sea).

Agregué el proyecto en github que demuestra esta estrategia.

ACTUALIZACIÓN: a partir de iOS 9, UICollectionViewFlowLayout tiene dos propiedades muy útiles que simplifican esta tarea drásticamente. Consulte la sectionHeadersPinToVisibleBounds y sectionFootersPinToVisibleBounds .


UICollectionViewController (como UITableVC) es un "acceso directo", estas 2 clases simplemente están reemplazando a UIViewController, crea el collectionView para ti.

Puede hacerlo fácilmente y agregar su vista fija por su cuenta.