Vi presenterer asyncdisplaykit: for glatte og responsive apps på iOS – Facebook Engineering

Har du noen gang lagt merke til apps stamming som du ruller og sveiper rundt? Tappet en knapp og så på hele grensesnittet fryse som det prøver å reagere? iOS er kjent for sin brukeropplevelse kvalitet bar, men møte den baren kan være vanskelig, spesielt på eldre iPhones og iPads. Polerte apper bruker vanligvis stykkevis ytelsesoptimaliseringer for å holde grensesnittene flytende, og behandler ulike kilder til langsomhet som forskjellige problemer. I dag er vi open-sourcing AsyncDisplayKit, et rammeverk som gir en helhetlig måte å holde appen jevn og responsiv.

saken For AsyncDisplayKit

iOS brukergrensesnitt funksjonalitet-tegning til skjermen, svarer på berøringshendelser, kjører fysikk simuleringer for treghet rulling, og så videre-er flaskehalset av hovedtråden. For en app for å opprettholde gullstandarden på 60 bilder per sekund, kan den bare bruke hovedtråden i millisekunder om gangen. Men uikit-visninger som UIImageView og UITextView kan ta titalls til hundrevis av millisekunder til størrelse og vise seg selv. Og mens hovedtråden dekoder et bilde eller gjengivelsestekst, kan det ikke svare på brukerinngang eller holde tritt med rulling.Siden bruk av lager UIKit-visninger kan forårsake avmatninger, har effektive apper en tendens til å ha løsninger for individuelle uikit-komponenter. I stedet for Å la UIImageView gjøre dyrt arbeid selv, kan de manuelt bruke Kjernegrafikk til å dekomprimere Jpeg og Png i bakgrunnen; i stedet for Å bruke UITextView, kan de jobbe med Kjernetekst direkte. Denne tilnærmingen er effektiv, men har begrensninger — individuelle løsninger har en tendens til å oppføre seg annerledes, noe som gjør det vanskelig å resonnere om forbedringer på høyere nivå og applikasjonsadferd.

asyncdisplaykit bygger På UIKit Og Core Animasjon for å tilby en generell løsning. Dens bilde – og tekstvisninger kan brukes uten å blokkere hovedtråden, og tilbyr en drop – in-løsning for denne vanlige oppgaven. Enda viktigere, den støtter asynkront opprette og gjengi komplekse visning hierarkier på samme måte.

Innføring av noden

asyncdisplaykit-noden er en trådsikker abstraksjon over UIView, som igjen er en abstraksjon Over CALayer:

Hvis du vet hvordan du bruker visninger, vet du hvordan du bruker noder. ASImageNode Og Teksten Kit-drevet ASTextNode kan brukes akkurat som Sine uikit kolleger. I motsetning til uikit-visningshierarkier, kan nodehierarkier for hele skjermbilder av innhold initialiseres og legges ut på bakgrunnstråder – og noder gjør det enkelt å dra nytte av multicore-Cpuene i alle nåværende iOS-enheter.

Noder har mange fordeler over visninger. Du kan for eksempel ofte forbedre ytelsen ved å erstatte visninger med lag. Dessverre krever det den kjedelige prosessen med å overføre visningsbasert kode til DEN forskjellige API-EN og risikerer uunngåelig regresjoner. Med noder er det så enkelt som:

hvis du senere må bytte fra lag tilbake til visninger, er det en en-linjeendring! Dette er en transformasjonsforskjell. I stedet for å være forsiktig med LAG-støttet UI-kode, kan du bruke den som standard når du ikke trenger berøringshåndtering.

Komme i gang

AsyncDisplayKit er robust og klar til bruk i appene dine. Vi opprinnelig bygget Det for Å gjøre Papers svært taktile brukergrensesnitt mulig, og det går hånd i hånd med Pop animasjonsmotoren, men det er like kraftig Med Uikit-Dynamikk og konvensjonelle appdesign. Vi kan ikke vente å se hva du vil skape med det.

Sjekk ut guiden Eller NSLondon talk for å lære mer. AsyncDisplayKit er tilgjengelig på GitHub.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.