Introduktion til AsyncDisplayKit: til glatte og lydhøre apps på iOS – Facebook Engineering

har du nogensinde bemærket, at apps stammer, når du ruller og stryger rundt? Bankede på en knap og så hele grænsefladen fryse, da den forsøger at reagere? iOS er kendt for sin kvalitetslinje for brugeroplevelse, men det kan være svært at møde denne bjælke, især på ældre iPhones og iPads. Polerede apps bruger typisk stykkevis ydelsesoptimeringer for at holde deres grænseflader flydende og behandle forskellige kilder til langsomhed som forskellige problemer. I dag er vi open-sourcing AsyncDisplayKit, en ramme, der tilbyder en holistisk måde at holde din app glat og lydhør.

sagen til asyncdisplaykit

iOS — brugergrænsefladefunktionalitet — tegning til skærmen, reaktion på berøringshændelser, kørsel af fysiksimuleringer til inertial rulning og så videre-er flaskehalset af hovedtråden. For at en app kan opretholde guldstandarden på 60 billeder i sekundet, kan den kun bruge hovedtråden i millisekunder ad gangen. Men hoved-tråd-kun UIKit-visninger som Uiimagevisning og Uitekstvisning kan tage tiere til hundreder af millisekunder til størrelse og vise sig selv. Og mens hovedtråden afkoder et billede eller gengiver tekst, kan det ikke reagere på brugerinput eller følge med i rulning.

da brug af UIKit-visninger på lager kan forårsage afmatning, har performant-apps tendens til at have løsninger til individuelle UIKit-komponenter. I stedet for at lade Uiimagevisning gøre dyrt arbejde selv, kan de manuelt bruge Kernegrafik til at dekomprimere JPEG ‘er og PNG’ er i baggrunden; i stedet for at bruge Uitekst, kan de arbejde direkte med Kernetekst. Denne tilgang er effektiv, men har begrænsninger — individuelle løsninger har tendens til at opføre sig anderledes, hvilket gør det vanskeligt at begrunde forbedringer på højere niveau og applikationsadfærd.

AsyncDisplayKit bygger på UIKit og Core Animation for at tilbyde en generel løsning. Dens billed-og tekstvisninger kan bruges uden at blokere hovedtråden og tilbyder en drop-in-løsning til denne fælles opgave. Endnu vigtigere understøtter det asynkront oprettelse og gengivelse af komplekse visningshierarkier på samme måde.

introduktion af noden

asyncdisplaykit-noden er en trådsikker abstraktion over Uivvisning, hvilket igen er en abstraktion over CALayer:

Hvis du ved, hvordan du bruger visninger, ved du, hvordan du bruger noder. ASImageNode og tekst Kit-drevne Astekstnode kan bruges ligesom deres UIKit modstykker. I modsætning til UIKit-visningshierarkier kan knudehierarkier for hele skærmfulde indhold initialiseres og lægges ud på baggrundstråde — og noder gør det nemt at drage fordel af multicore CPU ‘ er i alle nuværende iOS-enheder.

noder har mange fordele i forhold til visninger. For eksempel kan du ofte forbedre ydeevnen ved at erstatte visninger med lag. Desværre kræver det den kedelige proces med at overføre visningsbaseret kode til den forskellige API og risikerer uundgåeligt regressioner. Med noder er det så nemt som:

Hvis du senere skal skifte fra lag tilbage til Visninger, er det en linjeskift! Dette er en transformationsforskel. I stedet for at være forsigtig med LAGSTØTTET UI-kode, kan du bruge den som standard, når du ikke har brug for berøringshåndtering.

Kom godt i gang

AsyncDisplayKit er robust og klar til brug i dine apps. Vi byggede det oprindeligt for at gøre Papers meget taktile brugergrænseflade mulig, og det går hånd i hånd med Pop-animationsmotoren, men det er lige så kraftfuldt med UIKit-dynamik og konventionelle appdesign. Vi kan ikke vente med at se, hvad du vil skabe med det.

tjek vejledningen eller nslondon talk for at lære mere. AsyncDisplayKit er tilgængelig på GitHub.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.