Red de conocimiento de divisas - Cuestiones de seguridad social - De VVeboTableViewDemo a YYAsyncLayer (1)

De VVeboTableViewDemo a YYAsyncLayer (1)

Conozco VVeboTableViewDemo desde hace mucho tiempo y siempre quise estudiarlo. Recientemente, finalmente tuve tiempo de hacer VVeboTableViewDemo en Swift (VVeboTableViewDemo.swift). Pasé dos semanas leyendo una serie. de artículos sobre optimización de iOS Después de leerlos al menos una vez, descubrí que su resumen de puntos de optimización está muy disperso y la mayoría de ellos no son adecuados para un novato como yo.

Preguntas como esta:

Primero, eche un vistazo a la estructura de VVeboTableViewDemo (ya que lo traduje a Swift, usaré la versión de Swift para analizarlo a continuación, y el La lógica de la versión original es consistente.)

Entre ellos, DataPrensenter se extrae de VVeboTableView. En realidad lee datos, por lo que no necesita preocuparse por eso.

La imagen de arriba es todo el contenido de VVeboLabel. El método resaltado es el núcleo de VVeboLabel.

Esto pertenece a la tecnología Core Text, que es principalmente para el procesamiento especial de texto, utilizando dibujo línea por línea.

Los otros métodos son principalmente para resaltar texto y borrar contenido. que no es el foco.

En VVeboTableViewCell, el método resaltado es la parte principal. De hecho, la idea es exactamente la misma que VVeboLabel, que es dibujar el contenido de forma asincrónica en una imagen y luego mostrarlo para reducir la mezcla y reducir la presión de la GPU. No publicaré el código fuente, pero la demostración se publicará a continuación.

Esta es una clase muy inteligentemente diseñada. Antes de comenzar a estudiar las ideas de esta clase, te sugiero que leas este artículo. Por supuesto, si está lo suficientemente familiarizado con UIScrollView y este método func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity speed: CGPoint, targetContentOffset: UnsafeMutablePointer), entonces la idea de VVeboTableView quedará clara de un vistazo.

Este método se introdujo desde iOS 5 y se llama antes de didEndDragging. Cuando la velocidad en el método willEndDragging es CGPoin.zero (no hay velocidad en ambas direcciones cuando finaliza el arrastre), la desaceleración en didEndDragging es falsa. Es decir, no hay ningún proceso de desaceleración y no se llamará a willBeginDecelerating y didEndDecelerating. Por el contrario, cuando la velocidad no es CGPoin.zero, la vista de desplazamiento utilizará la velocidad como velocidad inicial y desacelerará hasta targetContentOffset. Vale la pena señalar que targetContentOffset aquí es un puntero. Sí, puede cambiar el destino del movimiento de desaceleración, lo cual es muy útil al implementar algunos efectos.

Fuente del texto anterior

Además de reescribir UICollectionViewFlowLayout, el efecto de centrado deslizante horizontal de la lectura de WeChat también se puede lograr controlando targetContentOffset

El método resaltado en la figura está la parte central

Lógica de juicio de dibujo de celda

El código fuente de VVeboTableViewDemo anterior ha sido analizado completamente, por lo que mientras te maravillas con las ingeniosas ideas del autor, también debes estar muy impresionado Me gustaría saber el origen de esta tecnología y el proceso de mejora. (La siguiente es una suposición personal)

A través de este artículo, creo que debería comprender el texto principal, los gráficos principales, la vista de prueba de impacto y el dibujo asincrónico. Puede dominar los tres primeros a través de los siguientes artículos recomendados. Tecnología, dibujo asincrónico En la siguiente sección Análisis del código fuente de YYAsyncLayer, creo que dominarás esta tecnología sin saberlo.

Fuente original

Esta tecnología parece reducir la presión sobre la GPU, porque la mezcla de capas la realiza la GPU, y aquí la CPU casi no tiene nada que hacer, así que mueve la. Mezcla de GPU con la función Draw de la CPU (_ rect: CGRect) para completar los requisitos.

Demostración de desplazamiento rápido de esta tecnología

Razones de la obsolescencia de la tecnología

Debido a la aparición de las pantallas de retina, el número de píxeles por unidad de área ha aumentado y la Las tareas realizadas por la CPU también se han convertido en Si hay demasiadas, la eficiencia será peor que el método subViews.

Aparecen nuevas tecnologías como AsyncDisplayKit YYKit

Creo que la aparición de VVeboTableViewDemo también debería seguir el proceso anterior

Texto principal:

Artefacto de composición tipográfica Swift CoreText

Documentación oficial

Core Graphics:

Tutorial de dibujo de iOS

Swift: Deberías saber algo sobre Core Graphics

Demostración oficial

Demostración oficial Versión Swift

Creación de interfaces de usuario concurrentes en iOS

Cadena de respuesta

Evento de iOS cadena de respuesta Aplicación de vista de prueba de impacto

Procesamiento de eventos de iOS

Dibujo asincrónico

/ios-concurrency/

上篇: Presentamos algunas películas atractivas de China 下篇: Disposiciones legales sobre el uso de acciones para compensar deudas
Artículos populares