De VVeboTableViewDemo a YYAsyncLayer (1)
Enumere tales problemas:
Primero, eche un vistazo a la estructura de VVeboTableViewDemo (ya que lo traduje a Swift, lo analizaré en la versión de Swift a continuación, que es consistente con la lógica de la versión original)
Entre ellos, DataPrensenter es lo que saqué de VVeboTableView. En realidad lee los datos, por lo que no necesita preocuparse por eso.
La imagen de arriba muestra todo el contenido de la etiqueta vve. El método de resaltado es el núcleo de la etiqueta vve.
Esta es la tecnología de texto central, que se ocupa principalmente de texto especial y utiliza dibujo línea por línea.
Otros métodos se centran principalmente en resaltar texto y borrar contenido, que no es el foco y puede ignorarse.
En VVeboTableViewCell, el método de resaltado es la parte central. 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, lo que puede reducir la mezcla y reducir la presión de la GPU. No publicaré el código fuente, pero a continuación se mostrará una demostración.
Esta es una clase inteligentemente diseñada. Antes de comenzar a estudiar las ideas para este curso, te sugiero que leas este artículo primero. Por supuesto, si está familiarizado con UIScrollView y este método, la vista de desplazamiento funcional terminará dibujando (_ vista de desplazamiento: vista de desplazamiento ui, con Velocity Velocity: CGPoint, TargetContentOffset:UnsafetablePointer
Este método se introdujo desde iOS 5, en didEndDragging llamado antes Cuando la velocidad en el método willEndDragging es CGPoin.zero (sin velocidad en ninguna dirección al final del arrastre), el descenso de didEndDragging es falso. Es decir, si no hay un proceso de desaceleración, willBeginDecelerating y didEndDecelerating no lo serán. llamado Por otro lado, cuando la velocidad no es CGPoin.zero, la vista de desplazamiento toma la velocidad como velocidad inicial y desacelera hasta targetContentOffset. Vale la pena señalar que targetContentOffset aquí es un puntero. destino del movimiento de desaceleración Esto es muy útil al implementar ciertos efectos
La fuente del texto anterior
Los efectos de centrado y deslizamiento horizontal de la lectura de WeChat no solo están reescribiendo UICollectionViewFlowLayout,
También esto se puede lograr controlando targetContentOffset.
El método de resaltado en la figura es la parte central.
Lógica de juicio de dibujo de celda
. El código fuente de VVeboTableViewDemo ha sido completamente analizado, por lo que mientras te maravillas con las ingeniosas ideas del autor, también sentirás curiosidad por el origen y el proceso de mejora de esta tecnología (la siguiente es una suposición personal)
A través de este artículo, creo que deberíamos comprender el texto principal, los gráficos principales, la vista de prueba de clic y el dibujo asincrónico. Puede dominar las tres primeras tecnologías a través de los siguientes artículos recomendados en la siguiente sección del código fuente de YYAsyncLayer. análisis Creo que dominarás esto sin conocer la tecnología.
Material original
Esta tecnología parece reducir la presión sobre la GPU, porque la combinación de capas la realiza la GPU y la CPU casi no tiene nada que hacer aquí, así que ponemos La mezcla de GPU se traslada a la función Draw(_ rect: CGRect) de la CPU 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 retina, los píxeles originales por unidad de área aumentaron y la CPU no. más cosas, lo que hace que el método subViews sea ineficiente.
Surgen 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 CoreText de Swift
Documentos oficiales
Gráficos principales:
Tutorial de dibujo de IOS
Debes tener conocimientos de los gráficos principales en Swift.
Demostración oficial
Demo oficial versión Swift
Creación de interfaces de usuario concurrentes en iOS
Cadena de respuesta
Aplicación de la vista de prueba de clic en la cadena de respuesta de eventos de iOS
Procesamiento de pruebas de clic de IOS
Representación asincrónica
/IOs-concurrency/