Upgrade to Pro — share decks privately, control downloads, hide ads and more …

非同期UI描画による高速なアプリケーションの実装

fumito-ito
September 03, 2018

 非同期UI描画による高速なアプリケーションの実装

iOSアプリケーションの高速化においてメインスレッドをブロックするUIの描画コストは無視できない問題です。

日経電子版アプリでは非同期なUI描画を実現するTexture(AsyncDisplayKit)を導入し、大量のテーブルをスムーズに描画しています。
本セッションではTextureの検討から具体的な導入ステップ、導入にあたって遭遇したトラブルと対応方法について紹介します。

-----

このスライドは俺コン 2018 Summer Day 1 (https://orecon.connpass.com/event/94858/) および iOSDC 2018 Reject Conference Day 1 (https://iosdc-reject-conference.connpass.com/event/93314/) で発表予定の内容です。

fumito-ito

September 03, 2018
Tweet

More Decks by fumito-ito

Other Decks in Technology

Transcript

  1. 3 “Most apps target a frame rate of 60 FPS,

    Equivalent to 16.67 ms per frame.” https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/ MTLBestPracticesGuide/FrameRate.html
  2. 10

  3. 20 ஈ֊తಋೖ • Ұ൪଎͍ͨ͘͠ը໘Λஔ͖׵͑ • 1ϲ݄͘Β͍Ͱௐࠪ + ࣮૷ • ViewController,

    ViewΛஔ͖׵͑ • ςʔϒϧͷࠩ෼ߋ৽Λ࣮૷ • ViewController୯ҐͰஔ͖׵͍͑ͯͬͨ • 1 VC / 2 ~ 3ਓ೔͘Β͍ͷϖʔε • Viewͷछྨ͕ଟ͍΄Ͳ͕͔͔࣌ؒΔ
  4. 22 Nodeʹஔ͖׵͑ • Node • UIView, UITableViewCellͳͲͷ୅ସ • ASDisplayNode, ASCellNodeͳͲ

    • ϨΠΞ΢τΤϯδϯ + εϨουηʔϑ • Nodeʹ௚઀ੜ͍͑ͯΔϓϩύςΟ͸શͯεϨουηʔϑ • CSS FlexboxϥΠΫͳϨΠΞ΢τΤϯδϯΛར༻ • node.view, node.layer͔ΒجఈͷΦϒδΣΫτʹ΋ΞΫηεͰ͖Δ • ͕ɺεϨουηʔϑͰ͸ͳ͍ͷͰཁ஫ҙ
  5. 25 NodeContainerʹஔ͖׵͑ • NodeContainer • UIViewController, UITableViewͳͲͷ୅ସ • ASViewController, ASTableNodeͳͲ

    • جຊ͸Nodeͱಉ͡ • delegate͸ϝΠϯεϨουͰಈ͘΋ͷͱͦΕҎ֎ͷεϨουͰಈ͘΋ͷ
 ͕ڞଘ͍ͯ͠ΔͷͰ஫ҙ • ASTableNode, ASCollectionNode͸Cellͷ࠶ར༻͕ͳ͍ͳͲ
 ಛ༗ͷҧ͍΋͋Δ