【问题标题】:How to save NSWindow position for multiple screen?如何为多个屏幕保存 NSWindow 位置?
【发布时间】:2016-04-19 07:12:04
【问题描述】:

我正在为 IB 中的窗口设置自动保存名称。在窗口的窗口控制器中,我正在执行以下操作 -

  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方法?感谢您的帮助。

【问题讨论】:

    标签: swift cocoa nswindow nswindowcontroller


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复。但我的查询与 NSWindow 和 NSView 相关,而不是 UIWindow 或 UIView。
    • 那么不确定。您可能想要更新您的问题以包含术语 NSWindow 和 NSView。如果你的答案很明确,你就更有可能得到他人的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    相关资源
    最近更新 更多