如何为多屏幕保存NSWindow位置?

时间:2016-04-19 07:12:05

标签: swift cocoa nswindow nswindowcontroller

我在IB中为窗口设置了autosavename。在窗口的windowcontroller中我正在做 -

  override func windowDidLoad() {
        super.windowDidLoad()

        // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
        self.window?.setFrameUsingName("TestWindowContollerAutoSaveName")
    }

这很简单。如果我在单个屏幕上使用它,它的效果非常好。但如果我使用多个屏幕,则初始窗口位置始终在主屏幕上。它不记得应用程序退出的屏幕。 我也尝试过(没有运气) -

  override func windowDidLoad() {
        super.windowDidLoad()

        // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
        let frameString = self.window?.stringWithSavedFrame
        if let _ = frameString{
            self.window?.setFrameFromString(frameString!)
        }
    }

如何正确使用 setFrameUsingName 方法?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

这是因为所有UIView都嵌入在UIWindow中。每个UIView,或者'屏幕'正如你所说的那样,是UIWindow的子视图。您可以将UIWindow视为UIView的父级。如果您只想编辑一个UIView,那么请考虑使用UIView。

您可以阅读有关View and Window Architecture的更多信息。他们在那里有一个有用的图表,也可以帮助您看到我的解释。