SEARCH THIS BLOG
CATEGORIES
ARCHIVES
RECOMMENDED OS X APP

Desktop Calendar Plus
App

Textastic
App

Tap Forms Organizer 5 + Secure Database
App

OmniFocus 2
App

RECOMMENDED iPad APP

GitMongo
App


RECOMMENDED UNIVERSAL APP

Textastic Code Editor 6
App

OmniFocus 2
App

iTeleport VNC AND RDP
App


Tap Forms Organizer 5 + Secure Database
App

LINKS

自分のアプリのステータスバーでの位置を取得する

最近、ステータスバーにアイコンが表示されるアプリケーションで、インストール後にヒントなどのビューを表示するアプリケーションを見かけます。
Dropboxとかが良い例でしょうか。

ウインドウをアニメーションさせたりする場合、自分のアプリのアイコンの座標を取得したい場合が有ります。
残念ながら NSStatusBar, NSStatusItem には調べるクラスは有りません。

なので、NSStatusItem にビューを追加してその座標を取得します。


NSStatusBar *statusBar = [NSStatusBar systemStatusBar];		
statusItem = [statusBar statusItemWithLength:24];
[statusItem retain];
		
/* StatusBarItem position */
NSView *statusItemView = [[NSView alloc]initWithFrame:NSRectFromCGRect(CGRectMake(0, 0, 24, [statusBar thickness]))];
[statusItem setView:statusItemView];
[statusItemView release];
		
positionStatusBarItem = [[[statusItem view] window ] frame];
[statusItem setView:NULL];
/* End StatusBarItem position */

簡単ですねー。
statusItem は NSStatusItem、 positionStatusBarItem は NSRect です。

他のアプリが終了したりなど、アイコンの位置が変わる場合も有ると思います。
取得したいタイミングで、座標を取得出来るように修正すると安心です。
(座標知りたい > メニューとか消してビュー乗っけて座標取得 > ビュー消してアイコンとかメニューを乗っけて表示)

| Mac, Programming | Permalink | コメント (0) | Trackback(0) |
 
TRACKBACK
このエントリーのトラックバックURL:
http://hyslog.com/blog/2012/05/13/497/trackback

コメントはお気軽にどうぞ



« | メイン | »