如何在 Cocoa 中的主 window 中显示 NSWindow?

How to display NSWindow within the main window in Cocoa?

我想在用户点击主 window 中的按钮时显示新的 window,但是当我使用 makeKeyAndOrderFront 调用单独的 window 时, window 弹出远离主要 window。

这是我在 NSViewController 的子类中写的:

myWindow = NSWindow()
myWindow.setFrame(myView.frame, display: true)
myWindow.contentView = myView
myWindow.makeKeyAndOrderFront(self)

但是,这会在主 window 之外打开一个新的 window。我想在主 window 中显示它,可能在主 window 的中心(我将 myView.frame 值设置在中心)。

那么如何在主 window 中调用新的 window?换句话说,我可以指定新 window 出现的位置吗?

您需要将坐标和/或矩形转换为屏幕 space。 NSView 和 NSWindow 提供以 "convert" 开头的方法看看那些。 有时您需要链接以从视图 space 转换为 window,然后将 window 转换为屏幕。 请记住,window 有一个 NSScreen 屏幕方法,并且 window 可以出现在许多不同尺寸的屏幕上,并可能跨越多个屏幕。