我需要把我的nswindow放在屏幕的右上角,菜单栏的正下方(比如通知)。做这个最好的方法是什么?

最佳答案

可以使用以下命令将窗口位置设置为右上角:

- (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];
}

10-08 09:09