设置 NSWindow 在当前屏幕中的位置

boo*_*thy 5 objective-c nswindow nswindowcontroller nspoint

我是objective-c的新手我创建了一个主窗口,我想在当前屏幕的右下角显示它。我尝试了以下代码

- (void)windowDidLoad
{
    NSPoint pos;

    pos.x = [[NSScreen mainScreen] visibleFrame].origin.x + [[NSScreen mainScreen] visibleFrame].size.width - [mywindow frame].size.width ;

    pos.y = [[NSScreen mainScreen] visibleFrame].origin.y + [[NSScreen mainScreen] visibleFrame].size.height - [mywindow frame].size.height;

    [mywindow setFrameTopLeftPoint:pos];

}
Run Code Online (Sandbox Code Playgroud)

它有什么问题?如何解决?

Yog*_*dra 5

NSPoint pos; 
pos.x = [[NSScreen mainScreen] frame].size.width - [mywindow frame].size.width ;

pos.y = 0.0f;

[self.window setFrame:CGRectMake(pos.x, pos.y, [mywindow frame].size.width , [mywindow frame].size.height) display:YES];
Run Code Online (Sandbox Code Playgroud)

因为 [[NSScreen mainScreen] frame].origin.x 将始终为 0。在 mac 屏幕的情况下,从底部开始。

  • 这实际上不是真的,`mainScreen` 是具有 mainWindow 的屏幕;这可能是也可能不是 x 原点为 0 的屏幕。原点屏幕(包含 0,0 的屏幕是 `[[NSScreen screen] firstObject]` (6认同)