Tengo una subclase de UICollectionViewLayout
que coloca las celdas en un círculo. El diseño devuelve YES
para la llamada shouldInvalidateLayoutForBoundsChange:
. En rotación, la celda en la posición inicial se desvanece y la célula en el posición final se desvanece en.¿Cuál es la mejor forma de deshabilitar los desvanecimientos cruzados en UICollectionView/UICollectionViewLayout gira o limita los cambios?
Al añadir el siguiente código a mi disposición puedo desactivado se desvanece y el círculo de artículos que parece a simple girar con el cambio de orientación:
- (UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
return nil;
}
- (UICollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
return [self layoutAttributesForItemAtIndexPath:itemIndexPath];
}
¿por qué los métodos llaman a ellas un cambio de límites porque la documentación no lo hace parecen sugerir que hacen? La documentación parece indicar que reciben el llamado relacionado con la inserción y eliminación de elementos de la vista de colección.
¿Existe alguna forma mejor de desactivar el fundido cruzado durante la rotación?
Notas:
initialLayoutAttributesForAppearingItemAtIndexPath:
La documentación estados que por defecto el método devuelvenil
pero llama asuper
regresaron valores no nulos.- puse puntos rompe simbólicos sobre los métodos UICollectionView
deleteItemsAtIndexPaths:
,moveItemAtIndexPath:toIndexPath:
yinsertItemsAtIndexPaths:
y ninguno de ellos se ven afectados durante la rotación.
Esto es solo una toma en la oscuridad, pero para deshabilitar la animación de rotación, puede cerrar completamente la animación del núcleo para la operación de rotación: [CATransaction begin]; [CATransaction setValue: (id) kCFBooleanFalse forKey: kCATransactionDisableActions]; // realiza tu rotación [Compromiso de transacción CATransaction]; – maz
Tal vez, internamente en un cambio de límites, los elementos se eliminen y se agreguen, y como resultado, se llama a los métodos. En cuanto a por qué -deleteItemsAtIndexPaths: y -insertItemsAtIndexPaths: no se llaman ... no hay pista aquí. Tal vez el programador UIKit hizo trampa y evitó la API para realizar la inserción y eliminar? No sin precedentes. – maz
¿Podría deshabilitar las animaciones implícitas en la capa de respaldo de la vista usando algo como lo describo aquí: http://stackoverflow.com/questions/2244147/disabling-implicit-animations-in-calayer-setneedsdisplayinrect/2244734#2244734? –