Pregunta UICollectionView self-sizing-cell en iOS 8 se bloqueará con UIDynamic flowLayout y la repetición de llamada a _updateVisibleCellsNow


Estoy tratando de usar la llamada "celda de autoevaluación", que significa:

  • conjunto estimatedItemSize en flowLayout
  • overide preferredLayoutAttributesFittingAttributes en la clase celular

Como esto: UICollectionView Self Sizing Cells con diseño automático

Y necesito un efecto dinámico como este:http://www.teehanlax.com/blog/implementing-a-bouncy-uicollectionviewlayout-with-uikit-dynamics/

Funciona bien sin UIDynamic, pero necesito UIDynamic. Como lo que veo, llamará al prepareLayout y layoutAttributesForElementsInRect hasta que muera, habrá demasiados _updateVisibleCellsNow esperando en la fila.

No tengo idea de cómo resolver eso, por favor ayúdenme en caso de que lo vea. O bien, si estoy utilizando esas tecnologías de manera incorrecta, por favor hágamelo saber.


14
2018-06-24 11:50


origen


Respuestas:


Dos cosas funcionaron para mí:

  • Asegúrese de que su vista de colección tenga restricciones de diseño definidas para su ubicación dentro de su supervista.
  • Recibí este bloqueo cuando el tamaño estimado era más grande que el tamaño final. Si configuro el tamaño estimado a un valor menor, el bloqueo se detuvo.

11
2017-11-09 12:29



Si ha cambiado cualquier tamaño o posición de marco, activará todas las celdas 'preferredLayoutAttributesFittingAttributes' hasta que todos los cuadros de las celdas no cambien.

El flujo de comportamiento es el siguiente:

1. Before self-sizing cell

2. Validated self-sizing cell again after other cells recalculated.

3. Did changed self-sizing cell

Si los segundos pasos no pueden estabilizar la posición y el tamaño de todas las celdas, se convertirá en un bucle infinito.

Por favor haz referencia a mi publicación aquí: UICollectionView Self Sizing Cells con diseño automático


1
2018-05-06 11:19