Core Animation と View

2,185 views

Published on

第49回Cocoa勉強会関西の発表資料です。

Published in: Technology

Core Animation と View

  1. 1. Core Animation と View かねうちてつや Cocoa勉強会関西 2013.03.30
  2. 2. 自己紹介かねうちてつや@kaniza / id:kaniza などフェンリルで働いてますWeb ブラウザ Sleipnir for Mac / iPhone / iPad など
  3. 3. 今日のネタUIViewNSViewCore AnimationCALayer
  4. 4. NSView / UIViewOS X / iOS GUI の基本構成要素 ボタン、テキスト、スライダなどOS X AppKit では NSView (2001年∼)iOS UIKit では UIView (2008年∼)
  5. 5. Core Animation初登場は OS X Leopard のプレビュー (2006年)市場投入は初代 iPhone (2007年)iPhone の 数ヶ月後に Leopard リリースiPhone の開発過程で生まれたらしい
  6. 6. Core AnimationとUIViewUIView の描画は CALayer で実現当初からアニメーションに適した設計
  7. 7. Core AnimationとNSViewOS X Leopard で Core Animation に対応オプションで CALayer ベースの描画モデルに[view setWantsLayer:YES] で Layer-Backed View に変身 デモ
  8. 8. Layer-Backed View - OS X
  9. 9. Layer-Backed View - OS XNSView を CALayer で描画
  10. 10. Layer-Backed View - OS XNSView を CALayer で描画NSView でなめらかアニメーション
  11. 11. Layer-Backed View - OS XNSView を CALayer で描画NSView でなめらかアニメーションSubview もすべて CALayer ベースに
  12. 12. Layer-Backed View - OS XNSView を CALayer で描画NSView でなめらかアニメーションSubview もすべて CALayer ベースにCALayer は AppKit が管理
  13. 13. Layer-Backed View - OS XNSView を CALayer で描画NSView でなめらかアニメーションSubview もすべて CALayer ベースにCALayer は AppKit が管理!= Layer-Hosted View
  14. 14. CoocaSlides
  15. 15. CALayer と View
  16. 16. CALayer と View構造は類似 階層的に描画内容を持つ 描画だけなら CALayer だけでも可View はイベント処理に対応
  17. 17. 描画モデルとアニメーションなぜ Layer-Backed View だとなめらか?drawRect と contents
  18. 18. 従来の描画モデルウィンドウをロジック(drawRect:)で塗り潰す再描画領域に関連する View で drawRect: 移動したらその都度 drawRect:そもそもアニメーション向きじゃない
  19. 19. Traditional View
  20. 20. Traditional View
  21. 21. Traditional View
  22. 22. drawRect:drawRect: Traditional View
  23. 23. Layer-Backed View (CALayer)の描画モデル絵を重ね合わせる 描画内容をキャッシュアニメーション時に drawRect しない 移動や合成はGPUの得意分野
  24. 24. Layer-Backed View
  25. 25. Layer-Backed View
  26. 26. Layer-Backed View
  27. 27. CoocaSlides
  28. 28. いいことばかりじゃないメモリ消費量の面では不利発展途上で変化が激しい Mountain Lion で大きく完成度が上がったLion 以前でテキストレンダリングが汚い デモ
  29. 29. とはいえ
  30. 30. 未来は Layer-Backed View だ
  31. 31. 参考Sleipnir for Mac の実装技術: Layer-Backed View http://blog.fenrir-inc.com/jp/2013/02/sleipnir-mac- implementation.htmlCore Animation Programming GuideNSView Class ReferenceApplication Kit Release Notes
  32. 32. まとめNSView も UIView のように CALayer ベースに移行しつつある従来の NSView と CALayer の描画モデルの違いNSView フル活用の Sleipnir for Mac よろしく! http://www.fenrir-inc.com/jp/mac/sleipnir/

×