2011-08-14 35 views
0

多くのApps(Mailなど)で使用されている標準ソースビュースタイルのサイドバーは、ウィンドウがアクティブなときに青色で、非アクティブなときに青色タイトルバーの状態の変更。ウィンドウの状態に応じてビューの背景色を設定する

さまざまな理由から、私はカスタムサイドバーを開発しましたが、バックグラウンドに対しても同じ効果が必要です。

アイデアは、背景を塗りつぶすカスタムNSViewを作成し、サイドバーの背景として使用することです。私は設定したいプロパティを「アクティブ」にしておき、drawメソッドはそれに応じて2つの異なるグラデーションをrectに塗りつぶします。

ここで問題となるのは、このようなビューをウィンドウの状態までフックする最も良い方法は何ですか?

答えて

1

リンゴがメールアプリケーションで使用するこの「サイドバー」はNSOutlineViewです。インターフェイスビルダでは、プロパティ "Highlight"を "Source list"に設定することで、このスタイルを使用することもできます。

自分のサイドバーを作成したい場合は、windowapplication代理人の意見を聞くことができます。彼らのステータスについて報告する方法はたくさんあります。

+0

ありがとうございます!私は疑念が通知を受け取るための最善の方法だと思う。私の本能は、それがビューやコントローラの階層を下っていくべきだと私に教えてくれるだろうし、サイドバーコントローラがウィンドウやアプリケーションのような上のエンティティからの通知を直接受け取るように登録することはちょっとしたショートカットに思えた。しかし、それはそれを行う方法でしょうか? – Monolo

+0

私はあなたのサイドバーを通知のオブザーバーとして追加するだけです。たとえば、次のようになります。[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(yourMethod :) name:NSApplicationDidResignActiveNotification object:nil]; – lbrndnr

関連する問題