IOS utiliza UICollectionViewFlowLayout para lograr un flujo en cascada perfecto, partición, adición, eliminación y optimización de actualización.
Diseño del agua
La clase clave utilizada para implementar el flujo en cascada es UICollectionViewFlowLayout. Si lo usa directamente sin heredar, el sistema nos ha ayudado a lograr algunos efectos, como el deslizamiento horizontal o vertical, y luego configurar algunas propiedades o seguir UICollectionViewDelegateFlowLayout. para mostrar efectos personalizados. Pero algunos diseños requieren que los implementemos, como el efecto cascada. UICollectionViewFlowLayout es muy poderoso y básicamente podemos lograr cualquier efecto deseado. Aquí solo hablamos de la implementación del flujo en cascada, otros efectos se pueden deformar y modificar en consecuencia.
Descripción de UICollectionViewFlowLayout
Métodos clave para implementar un diseño personalizado
De hecho, los tres métodos anteriores para devolver el diseño tienen el mismo principio, es decir, de acuerdo con el Configuración del atributo UICollectionViewFlowLayout o El cálculo original del sistema de atributos devuelto en el método proxy, debemos modificarlo al resultado deseado según los resultados del cálculo del sistema. Si los resultados del sistema no son aplicables, podemos utilizar directamente nuestros propios cálculos.
Primero hablemos del uso específico del diseño:
Nuestro diseño informático admite múltiples particiones. Aquí, la sección Infos del diccionario se utiliza para almacenar información de cálculo de múltiples particiones.
El principio de cálculo es el siguiente. Necesitamos obtener la información de cuántas particiones existen y luego distribuir cada elemento en las particiones.
Si organizamos la pantalla de visualización de arriba a abajo, debería ser:
Vista de cabeza -> Información sobre cada elemento en la partición -> Vista de pies -> Luego decora el escenario .
Las vistas decorativas se pueden calcular en función de requisitos específicos, no necesariamente al final. En este efecto utilicé un fondo verde para lograr una vista decorativa. Debido a que la partición actual está cubierta, necesito saber el resultado del cálculo del pie de página, por lo que el cálculo de la vista decorativa se coloca al final para conocer el valor máximo del eje Y de la partición actual.
Si sólo es necesario implementar este diseño, es posible que sea necesario reescribir o no el sistema correspondiente a cada proyecto.
Devuelve un tamaño específico en el método que devuelve el tamaño del contenido.
Dejemos que nuestra vista de colección implemente el método proxy anterior para implementar diferentes configuraciones de diseño, de modo que podamos llamarlo tan convenientemente como el proxy de diseño del sistema. Echemos un vistazo a la implementación en el controlador e implementemos diferentes métodos de proxy para configurar la visualización de contenido de diferentes particiones.
Al implementar el método anterior, se puede lograr el efecto de flujo en cascada.
Primero hablemos de cómo deslizarse a una sección o ubicación de elemento específica.
Al implementar el método anterior, podemos deslizarnos de manera flexible a la posición de cualquier elemento.
Llamado en el controlador, aquí escribimos la cuarta entrada de la segunda partición para facilitar las pruebas.
Puedes verlo deslizarse exactamente a la posición de entrada aquí.
Hablemos de nuestra optimización para agregar, eliminar y actualizar efectos.
Agregue tres matrices para implementar diferentes operaciones. El sistema tiene cuatro eventos de operación diferentes.
Echemos un vistazo a la implementación específica:
Aquí implementamos la animación para agregar, eliminar y actualizar elementos.
Aquí me gustaría comentar los siguientes puntos: layoutAttributesForItem, que se llamará al agregar un elemento, no devolverá atributos calculados, lo que provocará que la animación se muestre de forma anormal, por lo que realizamos operaciones adicionales aquí. . Si ya existe un diseño calculado, lo usaremos y luego implementaremos las operaciones de cambio específicas en el método delegado agregado. Ahora agregamos, eliminar puede cambiar el efecto de CGAffineTransform y alfa, actualizar puede cambiar el efecto de alfa. Si necesita lograr otros efectos de animación, puede cambiarlos en consecuencia.
Si tienes alguna duda, puedes dejar un mensaje y comunicarte con todos ~ ~