Qual é a melhor maneira de desabilitar os cross fades no UICollectionView / UICollectionViewLayout que gira ou altera as alterações?
Eu tenho uma subclasse deUICollectionViewLayout
que coloca as células em um círculo. O layout retornaYES
para a chamadashouldInvalidateLayoutForBoundsChange:
. Na rotação, a célula na posição inicial diminui e a célula na posição final diminui.
Adicionando o seguinte código ao meu layout, eu posso desabilitar os fades e o círculo de itens aparece para simplesmente girar com a mudança de orientação:
- (UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
return nil;
}
- (UICollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
return [self layoutAttributesForItemAtIndexPath:itemIndexPath];
}
Por que os métodos são chamados em uma mudança de limite porque a documentação parece não sugerir que eles o façam? A documentação parece indicar que eles são chamados relacionados à inserção e remoção de itens da exibição de coleção.
Existe uma maneira melhor de desativar o desvanecimento cruzado durante a rotação?
Notas:
oinitialLayoutAttributesForAppearingItemAtIndexPath:
documentação afirma que, por padrão, o método retornanil
mas chamadas parasuper
retornou valores não nulos.Eu defino pontos de quebra simbólicos nos métodos UICollectionViewdeleteItemsAtIndexPaths:
, moveItemAtIndexPath:toIndexPath:
einsertItemsAtIndexPaths:
e nenhum deles é atingido durante a rotação.