3

NSWindowを画面の右上、メニューバーのすぐ下 (通知など)に配置する必要があります。これを行うための最良のアプローチは何ですか?

4

2 に答える 2

11

次を使用して、ウィンドウの位置を右上隅に設定できます。

- (void)setWindowPosition
{
    NSPoint pos;
   pos.x = [[NSScreen mainScreen] visibleFrame].origin.x + [[NSScreen mainScreen] visibleFrame].size.width - [_window frame].size.width ;
    pos.y = [[NSScreen mainScreen] visibleFrame].origin.y + [[NSScreen mainScreen] visibleFrame].size.height - [_window frame].size.height  ;
   [_window setFrameOrigin : pos];
}

でこのメソッドを呼び出しapplicationDidFinishLaunching:、 を登録し windowDidResizeNotificationてサイズ変更イベントを次のように処理します。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [self setWindowPosition];   //set window pos

   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:NSWindowDidResizeNotification object:nil];    //register resize notification

}

ここで、通知ハンドラー メソッドで、ウィンドウの位置を再度更新します。

- (void)handleNotification: (id) sender
{
     [self setWindowPosition];
}
于 2013-10-30T08:44:42.353 に答える
1

使用[NSScreen visibleFrame]:

(未テスト)

// Assumes self is the NSWindow subclass
NSRect sf = [[NSScreen mainScreen] visibleFrame];
NSRect wf = self.frame;
self.frame = NSMakeRect(NSWidth(sf) - NSWidth(wf), NSHeight(sf) - NSHeight(wf),
                        wf.size.width, wf.size.height);
于 2013-10-29T16:13:26.897 に答える