Colección de citas famosas - Colección de máximas - De VVeboTableViewDemo a YYAsyncLayer (1)

De VVeboTableViewDemo a YYAsyncLayer (1)

De hecho, conozco vvebotableviewdemo desde hace mucho tiempo y siempre quise estudiarlo. Finalmente tuve tiempo recientemente. Hice VVeboTableViewDemo en Swift (VVeboTableViewDemo.swift) y pasé dos semanas leyendo una serie de artículos sobre optimización de iOS al menos una vez. Descubrí que resumieron los puntos de optimización de manera muy vaga y que la mayoría de ellos no son adecuados para empresas de pequeña capitalización como la mía.

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/