Presentamos AsyncDisplayKit: Para aplicaciones fluidas y con capacidad de respuesta en iOS: Ingeniería de Facebook

¿Alguna vez ha notado que las aplicaciones tartamudean mientras se desplaza y desliza? ¿Has pulsado un botón y has visto cómo se congela toda la interfaz mientras intenta reaccionar? iOS es conocido por su barra de calidad de experiencia de usuario, pero cumplir con esa barra puede ser difícil, especialmente en iPhones y iPads antiguos. Las aplicaciones pulidas suelen utilizar optimizaciones de rendimiento fragmentadas para mantener sus interfaces fluidas, tratando diferentes fuentes de lentitud como problemas diferentes. Hoy somos AsyncDisplayKit de código abierto, un framework que ofrece una forma holística de mantener tu aplicación fluida y receptiva.

La carcasa para AsyncDisplayKit

La funcionalidad de la interfaz de usuario de iOS-dibujar en la pantalla, responder a eventos táctiles, ejecutar simulaciones físicas para desplazamiento inercial, etc.-está bloqueada por el hilo principal. Para que una aplicación mantenga el estándar de oro de 60 fotogramas por segundo, solo puede usar el hilo principal durante milisegundos a la vez. Pero las vistas UIKit de solo hilo principal, como UIImageView y UITextView, pueden tardar de decenas a cientos de milisegundos en dimensionarse y mostrarse por sí mismas. Y aunque el hilo principal está decodificando una imagen o renderizando texto, no puede responder a la entrada del usuario ni seguir el ritmo del desplazamiento.

Dado que el uso de vistas UIKit de stock puede causar ralentizaciones, las aplicaciones de rendimiento tienden a tener soluciones alternativas para componentes UIKit individuales. En lugar de dejar que UIImageView haga un trabajo costoso por sí mismo, podrían usar manualmente los gráficos principales para descomprimir archivos JPEG y PNGs en segundo plano; en lugar de usar UITextView, podrían trabajar con Texto principal directamente. Este enfoque es eficaz, pero tiene limitaciones: las soluciones alternativas individuales tienden a comportarse de manera diferente, lo que dificulta razonar sobre las mejoras de nivel superior y el comportamiento de las aplicaciones.

AsyncDisplayKit se basa en UIKit y Core Animation para ofrecer una solución general. Sus vistas de imagen y texto se pueden usar sin bloquear el hilo principal, ofreciendo una solución de inserción para esta tarea común. Lo que es más importante, admite la creación y representación asíncronas de jerarquías de vistas complejas de la misma manera.

Introducción del nodo

El nodo AsyncDisplayKit es una abstracción segura de subprocesos sobre UIView, que a su vez es una abstracción sobre CALayer:

Si sabe cómo usar vistas, sabe cómo usar nodos. ASImageNode y el ASTextNode alimentado por Kit de texto se pueden usar al igual que sus contrapartes UIKit. A diferencia de las jerarquías de vistas de UIKit, las jerarquías de nodos para pantallas completas de contenido se pueden inicializar y diseñar en subprocesos en segundo plano, y los nodos facilitan el aprovechamiento de las CPU multinúcleo en todos los dispositivos iOS actuales.Los nodos

tienen muchas ventajas sobre las vistas. Por ejemplo, a menudo puede mejorar el rendimiento sustituyendo las vistas por capas. Desafortunadamente, hacerlo requiere el tedioso proceso de portar código basado en vistas a las diferentes API e inevitablemente corre el riesgo de regresiones. Con los nodos, es tan fácil como:

Si más tarde necesita cambiar de capas a vistas, ¡es un cambio de una línea! Esta es una diferencia transformadora. En lugar de tener cuidado con el código de interfaz de usuario respaldado por capas, puede usarlo de forma predeterminada siempre que no necesite manejo táctil.

introducción

AsyncDisplayKit es robusto y listo para usar en sus aplicaciones. Originalmente lo construimos para hacer posible la interfaz de usuario altamente táctil de Paper, y va de la mano con el motor de animación Pop, pero es igual de potente con la dinámica de UIKit y los diseños de aplicaciones convencionales. No podemos esperar a ver qué crearás con él.

Echa un vistazo a la guía o a la charla de NSLondon para obtener más información. AsyncDisplayKit está disponible en GitHub.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.