アイコンポップアップボタン

in

Snow Leopardのアカウントアイコンの選択や、バージョンアップしたTarnsmit4にアイコンを選択するポップアップメニュー風のUIがあるのですが、

 Icon PopupMenu

仕掛かり中のアプリでもこんな風にできたらいいなと思って調べてみたら、Matt GemmelさんのところにImagePopupというサンプルがあってこれを応用すればなんとかイメージに近づけそうなので修正してみました。

サンプルではメインウィンドウ(のビュー)に対してにボタンの位置が固定なため、ウィンドウをリサイズするとメニュー位置がずれてしまいます。これを回避するため、直接メインウィンドウのビューにポップアップを配置するのは止めて(リサイズのたび計算するなんて考えるだけでオソロシイ)、NSBoxをメインウィンドウに配置しIBのアンカーで固定し、このNSBox上にポップアップを配置するようにしました。

後は、trackMouse:inRect:ofView:untilMouseUpでメニューに渡すEventでのLocationをNSBoxのフレームのすぐ下になるよう調整してやればOK。ただし、実際のアプリケーションではビューの階層構造がもっと複雑なヒエラルキーを構成しているハズですので、サンプルのように単純にいかないでしょうが、とりあえず似た風なことはできました。それにしてもあのアイコンがマトリクス状に並ぶメニューはどうやって実装するんですかね?テンプレートがありそうな気もしますが...

サンプルは例によって、GitHubのhttp://github.com/hippos/ImageButtonDemoにあります。オリジナルのソースはCocoa Source Code » Matt Legend Gemmellにあります。Mattさんのコードはたくさん使わせてもらっているのでDonateしなきゃ。

この記事のトラックバックURL:

http://hippos-lab.com/blog/trackback/372

Comments