Apresentando AsyncDisplayKit: para aplicativos suaves e responsivos no iOS – Facebook Engineering

você já notou aplicativos gaguejando enquanto você desloca e desliza por aí? Carregou num botão e viu toda a interface congelar à medida que tenta reagir? iOS é bem conhecido por sua experiência de usuário barra de qualidade, mas conhecer esse bar pode ser difícil, especialmente em iPhones mais antigos e iPads. Aplicativos polidos normalmente usam otimizações de desempenho fragmentadas para manter suas interfaces fluidas, tratando diferentes fontes de lentidão como problemas diferentes. Hoje estamos open-sourcing AsyncDisplayKit, um framework que oferece uma forma holística de manter o seu aplicativo suave e ágil.

the case for AsyncDisplayKit

iOS user interface functionality — drawing to the screen, responding to touch events, running physics simulations for inercial scrolling, and so on — isoked by the main thread. Para um aplicativo para manter o padrão ouro de 60 quadros por segundo, ele só pode usar o fio principal para milisegundos de cada vez. Mas as vistas do UIKit só para linhas principais, como o UIImageView e o UITextView, podem levar dezenas a centenas de milisegundos para o tamanho e exibir-se. E enquanto o tópico principal é decodificar uma imagem ou renderizar texto, ele não pode responder à entrada do usuário ou acompanhar a rolagem.

Uma vez que usar vistas UIKit de estoque pode causar lentidão, aplicativos performantes tendem a ter workarounds para componentes individuais do UIKit. Em vez de deixar o UIImageView fazer um trabalho caro por si só, eles podem usar manualmente gráficos do núcleo para descomprimir JPEGs e PNGs em segundo plano; em vez de usar UITextView, eles podem trabalhar com o texto principal diretamente. Esta abordagem é eficaz, mas tem limitações — os workarounds individuais tendem a se comportar de forma diferente, tornando difícil raciocinar sobre melhorias de nível superior e comportamento de Aplicação.

AsyncDisplayKit constrói sobre UIKit e animação principal para oferecer uma solução geral. Suas vistas de imagem e texto podem ser usadas sem bloquear o fio principal, oferecendo uma solução de gota para esta tarefa comum. Mais importante, ele suporta assíncronamente a criação e a prestação de hierarquias de visão complexa da mesma forma.

Introdução o nó

O AsyncDisplayKit nó é uma thread-safe abstração sobre a uiview, que por sua vez é uma abstração sobre CALayer:

Se você sabe como usar modos de exibição, você sabe como usar o nós. ASImageNode e o ASTextNode com kit de texto podem ser usados assim como seus homólogos UIKit. Ao contrário das hierarquias UIKit view, as hierarquias de nós para screenfuls inteiros de conteúdo podem ser inicializadas e colocadas em threads de fundo — e nós tornam mais fácil tirar proveito do CPUs multicore em todos os dispositivos iOS atuais.os nós

têm muitas vantagens sobre as vistas. Por exemplo, você pode muitas vezes melhorar o desempenho, substituindo vistas por camadas. Infelizmente, fazê-lo requer o processo tedioso de portando o código baseado em visualização para as diferentes API e inevitavelmente corre o risco de regressões. Com nós, é tão fácil como:

se mais tarde você precisar mudar de camadas para vistas, é uma mudança de uma linha! Esta é uma diferença transformacional. Em vez de ser cauteloso com o código UI de camada-backed, você pode usá-lo por padrão sempre que você não precisa de manuseio de toque.

iniciar

AsyncDisplayKit é robusto e pronto para uso em suas aplicações. Nós originalmente o construímos para tornar possível a interface de usuário altamente táctil do Papel, e ele vai lado a lado com o motor de animação Pop, mas é igualmente poderoso com a dinâmica UIKit e projetos de aplicativos convencionais. Mal podemos esperar para ver o que vais criar com ele.consulte o guia ou o NSLondon talk para saber mais. AsyncDisplayKit está disponível no GitHub.

Deixe uma resposta

O seu endereço de email não será publicado.