una tronco tres toma tapar superior rota rio que planta partes parte para nace las infeliz esparto esencia donde dividir desventurado cubierta crucigrama cosa colmenas canal cambia brazo boca algo agua objective-c xcode header uicollectionview supplementary

objective c - tronco - UICollectionView Encabezados flotantes en la parte superior y lateral



parte superior y lateral del tronco de donde nace el brazo (2)

¿Cómo se implementan los encabezados en una vista de uicollection? Sé que puedes poner vistas adicionales, pero no sé cómo hacerlas "flotar" sobre una sección como los encabezados en una vista única.

Aquí está mi situación: tengo una vista de colección con las celdas dispuestas en un formato de cuadrícula. Puede desplazarse horizontal y verticalmente. Quiero tener un encabezado en la parte superior para que cuando se desplace horizontalmente se desplace horizontalmente con él, pero no se desplace verticalmente. También quiero el mismo tipo de cosas en el lado izquierdo donde se desplaza verticalmente con la vista de colección pero no horizontalmente. ¿Está implementando esto con puntos de vista suplementarios el enfoque correcto?

La funcionalidad final que estoy buscando es similar a la de la aplicación de hoja de cálculo Numbers en iOS.

¡Gracias de antemano por tu ayuda!


EDITAR: como se menciona en los comentarios, esta respuesta es válida, pero no para múltiples secciones. Vea este blog para una mejor solución: http://blog.radi.ws/post/32905838158/sticky-headers-for-uicollectionview-using#notes

Debe especificar ese comportamiento en su diseño:

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect { NSMutableArray* attributesArray = [[super layoutAttributesForElementsInRect:rect] mutableCopy]; BOOL headerVisible = NO; for (UICollectionViewLayoutAttributes *attributes in attributesArray) { if ([attributes.representedElementKind isEqualToString:UICollectionElementKindSectionHeader]) { headerVisible = YES; attributes.frame = CGRectMake(self.collectionView.contentOffset.x, 0, self.headerReferenceSize.width, self.headerReferenceSize.height); attributes.alpha = HEADER_ALPHA; attributes.zIndex = 2; } } if (!headerVisible) { UICollectionViewLayoutAttributes *attributes = [self layoutAttributesForSupplementaryViewOfKind:UICollectionElementKindSectionHeader atIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]]; [attributesArray addObject:attributes]; } return attributesArray; }


Actualización para iOS9:

let flow = collectionView.collectionViewLayout as! UICollectionViewFlowLayout flow.sectionHeadersPinToVisibleBounds = true

Pásalo.