Objective c 在调整大小时保存窗口大小(&A);为用户关闭

Objective c 在调整大小时保存窗口大小(&A);为用户关闭,objective-c,interface-builder,resize,nswindow,Objective C,Interface Builder,Resize,Nswindow,我注意到OSX上的所有应用程序似乎都保存了您设置的大小。下次打开时,它通常处于相同的位置和大小 我正在制作一个应用程序,我注意到在调整大小后,如果我再次启动该应用程序,它只是我在Xcode 4的IB中设置的大小,而不是启动时我调整大小的大小 每次更改窗口大小时,是否必须手动保存窗口大小?或者通过IB有没有更简单的方法?(我的窗口确实设置了一个最小大小,如果它改变了什么。)在界面生成器中选择主窗口时,属性检查器中应该有一个名为“自动保存”的属性。在那里输入任何名字对我来说都很有用。苹果让它变得简单

我注意到OSX上的所有应用程序似乎都保存了您设置的大小。下次打开时,它通常处于相同的位置和大小

我正在制作一个应用程序,我注意到在调整大小后,如果我再次启动该应用程序,它只是我在Xcode 4的IB中设置的大小,而不是启动时我调整大小的大小


每次更改窗口大小时,是否必须手动保存窗口大小?或者通过IB有没有更简单的方法?(我的窗口确实设置了一个最小大小,如果它改变了什么。)

在界面生成器中选择主窗口时,属性检查器中应该有一个名为“自动保存”的属性。在那里输入任何名字对我来说都很有用。

苹果让它变得简单。在interface builder中,对于您的窗口,只需在
Autosave
字段中键入一个唯一的名称,它就会在全局用户默认值中以该名称保存它。例如


在IB中设置了
自动保存
名称后,我可以看到我的窗口的框架被保存到其首选项文件中,但自动恢复仍然无法工作。然后我记得在常规设置下的系统首选项中取消选中
退出应用时关闭窗口
复选框,窗口位置按预期恢复。

如果您没有使用IB创建窗口,您可以使用以下方法在Swift中设置此属性:

setFrameAutosaveName(_ name: NSWindow.FrameAutosaveName)
(仅
frameAutosaveName
属性是
get

例如:

windowController.window?.setFrameAutosaveName("appWindow")

谢谢我以为有一个简单的解决方案,但就是想不出来。我为我们Visual Studio for Mac用户添加了一个指向我自己答案的链接: