首页 > 解决方案 > 获取窗口恢复边界

问题描述

在 Macos 中最大化窗口时,窗口会填满屏幕。

我想要做的是让窗口恢复位置和大小,就像您再次按下最大化按钮以恢复原始位置一样。你怎么能做到这一点?

我需要这个来保存退出时的窗口位置。

标签: objective-cswiftmacos

解决方案


中有一个为此任务准备的方法NSWindow

你可以向你的 ViewController 询问它的 NSWindow 并为它的 Frame 设置一个 AutosaveName 像..

[self.view.window setFrameAutosaveName:@"VerySpecialWindowAutoSaveName"];

这将最终在NSUserDefaults您的应用程序中作为条目...

"NSWindow Frame VerySpecialWindowAutoSaveName" = "300 100 1200 1005 0 0 2560 1289"

但是这段代码的最佳位置是......没有最佳位置,因为它取决于您的应用程序方法。

当您在基于文档的应用程序中有多个窗口时,整个过程可能具有挑战性,但是由于您可以为每个文档窗口设置 AutosaveName,因此您可以在需要时恢复框架,至少对于最后一个文档。应该提到的是,您也可以在 InterfaceBuilder 和 Code 中设置 AutosaveName - 因此,如果您将 IB 和代码用于同一个窗口,请注意它们遵循相同的名称。

你可以在这个要点中找到一个快速的例子


推荐阅读