Objective c 恢复窗口边界

Objective c 恢复窗口边界,objective-c,swift,macos,Objective C,Swift,Macos,在Macos中最大化窗口时,该窗口将填充屏幕 我想做的是恢复windows的位置和大小,就像再次按下最大化按钮恢复原始位置一样。你怎么能做到这一点 我需要它来保存退出时的窗口位置。在NSWindow 您可以要求ViewController提供其NSWindow,并为其类似于帧的设置一个AutosaveName [self.view.window setFrameAutosaveName:@"VerySpecialWindowAutoSaveName"]; 它将作为条目出现在

在Macos中最大化窗口时,该窗口将填充屏幕

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


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

NSWindow

您可以要求ViewController提供其NSWindow,并为其类似于帧的设置一个AutosaveName

[self.view.window setFrameAutosaveName:@"VerySpecialWindowAutoSaveName"];
它将作为条目出现在应用程序的
NSUserDefaults
中,如

"NSWindow Frame VerySpecialWindowAutoSaveName" = "300 100 1200 1005 0 0 2560 1289"
但是这个代码最好的地方是。。。没有最佳位置,因为它取决于你的应用程序方法

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

您可以在swift中找到一个例子,即在进入全屏之前使用通知(
NSWindow.willEnterFullScreenNotification
)获取窗口大小。