2011年4月21日木曜日
Cocoa なんちゃってtabbed interface NSCellで行くか、NSViewにするか
Developer toolの中にQuartz Debug.appというtoolがあって、グラフィックス系の処理のdebugやらパフォーマンス測定やらをビジュアルに確かめることができる。
このtoolで「Show tracking rectangles」を有効にすると、各アプリのウィンドウのtrackingAreaを視覚的に確かめることができる。NSTrackingAreaはNSViewしか持てない(・・・と理解しているがそれでいいのだろうか。)、しかもViewひとつにつきTrakingAreaもひとつ、のようなので、TrakingAreaイコールView、ということになる。
いろいろなタブインターフェイス付きのアプリで試してみたところ、とりあえずapple謹製アプリでタブインターフェイスを持つものは、タブをNSViewで作っているようだ。
GoogleのChromeもタブは全部TrakingAreaを持っていた。firefoxはタブに全くTrakingAreaがない。独自に実装しているのということか。
Cellでタブを作っていくと、TrakingAreaを独自に持てないため、「閉じるボタン」の状態遷移とか、マウスイベント処理がけっこう面倒なことになる。
その点Viewにしてしまえば、マウスイベントが処理できるため何かと楽。タブを表現するViewクラスで一度実装してしまえば面倒なことがない。
というわけで、このままCellでいくか、Viewに変更するかちょっと悩み中。
こういう時はViewでタブを実装してしまうサンプルを作ってみるのが話が早い。この週末の楽しみ、ということにしよう。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿