Bemutatkozik az AsyncDisplayKit: a sima és érzékeny Alkalmazások iOS-Facebook Engineering

Észrevetted már, hogy az alkalmazások dadognak, miközben görgetsz és csúsztatsz? Megérintett egy gombot, és figyelte, hogy az egész felület lefagy, miközben megpróbál reagálni? az iOS jól ismert a felhasználói élmény minőségi sávjáról, de ennek a sávnak a teljesítése nehéz lehet, különösen a régebbi iPhone és iPad készülékeken. A csiszolt alkalmazások általában darabonkénti teljesítményoptimalizálást használnak, hogy az interfészek folyékonyak maradjanak, a lassúság különböző forrásait különböző problémákként kezelve. Ma nyílt forráskódú AsyncDisplayKit, egy olyan keretrendszer, amely holisztikus módon biztosítja az alkalmazás zökkenőmentes és érzékenységét.

az asyncdisplaykit esetét

az iOS felhasználói felület funkcionalitása — rajzolás a képernyőre, reagálás az érintéses eseményekre, fizikai szimulációk futtatása inerciális görgetéshez stb. — a fő szál szűkíti. Ahhoz, hogy egy alkalmazás fenntartsa a másodpercenkénti 60 képkocka aranystandardját, egyszerre csak milliszekundumig tudja használni a fő szálat. De a csak főszálú UIKit nézetek, mint például az UIImageView és az UITextView, tíz-száz milliszekundumot vehetnek igénybe a méretük és megjelenítésük érdekében. Míg a fő szál egy kép dekódolása vagy szöveg renderelése, nem tud reagálni a felhasználói bevitelre, vagy lépést tartani a görgetéssel.

mivel a stock UIKit nézetek használata lassulást okozhat, a performant alkalmazások általában megoldják az egyes UIKit összetevőket. Ahelyett, hogy az UIImageView drága munkát végezne, manuálisan használhatják a Core grafikát a JPEG-k és a PNG-k kibontására a háttérben; az UITextView használata helyett közvetlenül működhetnek az Alapszöveggel. Ez a megközelítés hatékony, de korlátai vannak — az egyéni megoldások általában másképp viselkednek, ami megnehezíti a magasabb szintű fejlesztések és az alkalmazás viselkedésének érvelését.

az AsyncDisplayKit az UIKit-re és a Core animációra épül, hogy általános megoldást kínáljon. A kép – és szövegnézetek a fő szál blokkolása nélkül is használhatók, és egy drop-in megoldást kínálnak erre a közös feladatra. Ennél is fontosabb, hogy aszinkron módon támogatja a komplex nézethierarchiák létrehozását és renderelését.

A csomópont bemutatása

az AsyncDisplayKit csomópont egy szálbiztos absztrakció az UIView felett, amely viszont absztrakció a CALayer felett:

Ha tudod, hogyan kell használni a nézeteket, tudod, hogyan kell használni a csomópontokat. ASImageNode és a szöveg Kit-alapú ASTextNode lehet használni, mint a UIKit társaik. Az UIKit nézethierarchiákkal ellentétben a teljes képernyős tartalom csomóponthierarchiái inicializálhatók és elrendezhetők a háttérszálakon — és a csomópontok megkönnyítik a többmagos CPU-k kihasználását az összes jelenlegi iOS-eszközön.

a csomópontoknak számos előnye van a nézetekkel szemben. Például gyakran javíthatja a teljesítményt, ha a nézeteket rétegekkel helyettesíti. Sajnos, ez megköveteli a fárasztó folyamat portolása nézet-alapú kódot a különböző API és elkerülhetetlenül kockáztatja regresszió. A csomópontok, ez olyan egyszerű, mint:

ha később kell váltani rétegek vissza nézetek, ez egy egysoros változás! Ez egy transzformációs különbség. Ahelyett, hogy óvatos lenne a rétegalapú felhasználói felület kódjával, alapértelmezés szerint használhatja, amikor nincs szüksége érintéskezelésre.

első lépések

az AsyncDisplayKit robusztus és használatra kész az alkalmazásokban. Eredetileg azért építettük, hogy lehetővé tegyük a Paper rendkívül tapintható felhasználói felületét, és kéz a kézben jár a Pop animációs motorral, de ugyanolyan erős az UIKit dinamikájával és a hagyományos alkalmazástervekkel. Alig várjuk, hogy lássuk, mit hozol létre vele.

további információkért olvassa el az útmutatót vagy az NSLondon beszélgetést. Az AsyncDisplayKit elérhető a GitHub-on.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.