core animation と view

Post on 30-Jun-2015

1.593 Views

Category:

Technology

6 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Core Animation と ViewかねうちてつやCocoa勉強会関西

2013.03.30

自己紹介かねうちてつや

@kaniza / id:kaniza など

フェンリルで働いてます

Web ブラウザ Sleipnir for Mac / iPhone / iPad など

今日のネタUIView

NSView

Core Animation

CALayer

NSView / UIViewOS X / iOS GUI の基本構成要素

ボタン、テキスト、スライダなど

OS X AppKit では NSView (2001年~)

iOS UIKit では UIView (2008年~)

Core Animation

初登場は OS X Leopard のプレビュー (2006年)

市場投入は初代 iPhone (2007年)

iPhone の 数ヶ月後に Leopard リリース

iPhone の開発過程で生まれたらしい

Core AnimationとUIViewUIView の描画は CALayer で実現

当初からアニメーションに適した設計

Core AnimationとNSViewOS X Leopard で Core Animation に対応

オプションで CALayer ベースの描画モデルに

[view setWantsLayer:YES] で Layer-Backed View に変身

デモ

Layer-Backed View - OS X

Layer-Backed View - OS XNSView を CALayer で描画

Layer-Backed View - OS XNSView を CALayer で描画

NSView でなめらかアニメーション

Layer-Backed View - OS XNSView を CALayer で描画

NSView でなめらかアニメーション

Subview もすべて CALayer ベースに

Layer-Backed View - OS XNSView を CALayer で描画

NSView でなめらかアニメーション

Subview もすべて CALayer ベースに

CALayer は AppKit が管理

Layer-Backed View - OS XNSView を CALayer で描画

NSView でなめらかアニメーション

Subview もすべて CALayer ベースに

CALayer は AppKit が管理

!= Layer-Hosted View

CoocaSlides

CALayer と View

CALayer と View

構造は類似

階層的に描画内容を持つ

描画だけなら CALayer だけでも可

View はイベント処理に対応

描画モデルとアニメーション

なぜ Layer-Backed View だとなめらか?

drawRect と contents

従来の描画モデルウィンドウをロジック(drawRect:)で塗り潰す

再描画領域に関連する View で drawRect:

移動したらその都度 drawRect:

そもそもアニメーション向きじゃない

Traditional View

Traditional View

Traditional View

Traditional View

drawRect:

drawRect:

Layer-Backed View (CALayer)の描画モデル

絵を重ね合わせる

描画内容をキャッシュ

アニメーション時に drawRect しない

移動や合成はGPUの得意分野

Layer-Backed View

Layer-Backed View

Layer-Backed View

CoocaSlides

いいことばかりじゃない

メモリ消費量の面では不利

発展途上で変化が激しい

Mountain Lion で大きく完成度が上がった

Lion 以前でテキストレンダリングが汚い

デモ

とはいえ

未来は Layer-Backed View だ

参考Sleipnir for Mac の実装技術: Layer-Backed View

http://blog.fenrir-inc.com/jp/2013/02/sleipnir-mac-implementation.html

Core Animation Programming Guide

NSView Class Reference

Application Kit Release Notes

まとめNSView も UIView のように CALayer ベースに移行しつつある

従来の NSView と CALayer の描画モデルの違い

NSView フル活用の Sleipnir for Mac よろしく!

http://www.fenrir-inc.com/jp/mac/sleipnir/

top related