animation - Animate UICollectionViewFlowLayout subclase UICollectionViewLayoutAttributes cambios de marco




uicollectionviewcell (2)

SOLUCIONADO

No existe una "función de animación", o algo similar, ya que cambiar los marcos de los elementos de una vista de colección dentro de su propio diseño personalizado (flujo) simplemente no se puede animar.

La solución al problema es escribir un algoritmo que calcule todos los marcos relevantes que el método layoutAttributesForElementsInRect: proporciona, de modo que establecer el marco de un elemento respetuosamente establecerá el marco de otro elemento y compensará el tamaño agregado o reducido.

He UICollectionViewFlowLayout , y en esa subclase, estoy cambiando los marcos UICollectionViewLayoutAttributes , para que aparezcan más grandes o más pequeños, según su posición en la pantalla.

Estoy realizando los cambios de marco en layoutAttributesForElementsInRect : Y también devolviéndolo en layoutAttributesForItemAtIndexPath : estoy devolviendo SÍ en shouldInvalidateLayoutForBoundsChange :

Todo está funcionando bien, pero las celdas no animan los cambios del marco.

¿Me estoy perdiendo de algo? ¿Por qué los cambios no están siendo animados?

Gracias.


Puede usar un TextSwitcher para tener animaciones al cambiar el texto en un TextView.

Un TextSwitcher es solo un tipo especial de ViewSwitcher , y como tal, le permite proporcionar dos Vistas desde las cuales animar. Cuando llama a setText (), actualiza el texto del siguiente TextView y luego lo anima en la pantalla y sale el actual. El antiguo TextView se designa como el 'siguiente' TextView y el proceso se repite.

Puede especificar las Vistas usando setFactory(...) o simplemente agregarle dos TextViews con addView(...) .

// get a TextSwitcher view; instantiate in code or resolve from a layout/XML
TextSwitcher textSwitcher = new TextSwitcher(context);

// specify the in/out animations you wish to use
textSwitcher.setInAnimation(context, R.anim.slide_in_left);
textSwitcher.setOutAnimation(context, R.anim.slide_out_right);

// provide two TextViews for the TextSwitcher to use
// you can apply styles to these Views before adding
textSwitcher.addView(new TextView(context));
textSwitcher.addView(new TextView(context));

// you are now ready to use the TextSwitcher
// it will animate between calls to setText
textSwitcher.setText("hello");
...
textSwitcher.setText("goodbye");




ios animation uicollectionview uicollectionviewcell uicollectionviewlayout