¿Cuál es la mejor manera de deshabilitar los fundidos cruzados en las rotaciones o límites de UICollectionView / UICollectionViewLayout?
Tengo una subclase deUICollectionViewLayout
que coloca las células en un círculo. El diseño vuelve.YES
para la llamadashouldInvalidateLayoutForBoundsChange:
. En la rotación, la celda en la posición inicial se desvanece y la celda en la posición final se desvanece.
Al agregar el siguiente código a mi diseño, puedo desactivar los desvanecimientos y el círculo de elementos parece simplemente girar con el cambio de orientación:
- (UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
return nil;
}
- (UICollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
return [self layoutAttributesForItemAtIndexPath:itemIndexPath];
}
¿Por qué se llama a los métodos en un cambio de límites porque la documentación no parece sugerir que lo hagan? La documentación parece indicar que se los llama en relación con la inserción y eliminación de elementos de la vista de colección.
¿Hay una mejor manera de deshabilitar el fundido cruzado durante la rotación?
Notas:
losinitialLayoutAttributesForAppearingItemAtIndexPath:
La documentación indica que por defecto el método devuelvenil
pero llama asuper
valores no nulos devueltos.Establecí puntos de ruptura simbólicos en los métodos UICollectionViewdeleteItemsAtIndexPaths:
, moveItemAtIndexPath:toIndexPath:
yinsertItemsAtIndexPaths:
y ninguno de ellos es golpeado durante la rotación.