当OS X "zooms" 时,如何设置什么window 大小是首选呢?

How to set what window size is preferred when OS X "zooms" it?

在 OS X 中,window "zoom"(绿色 window button/titlebar 自 Yosemite 起双击)应该展开 window 到其首选大小(大于内容,但不是最大值)。

我的 window 中的内容各不相同,因此在编译时不知道理想的大小,但我可以在 运行 时计算它。

我希望缩放将 window 大小调整到其首选大小,但我不想以其他方式限制 window 大小(即用户仍然可以自由调整它的大小比理想值大或小)。

告诉 OS X 缩放时应该使用什么 window(或 window 内容)大小的正确方法是什么?

当用户缩放或取消缩放 window 时,window 将向其委托发送 windowWillUseStandardFrame:defaultFrame: message.

第一个参数是window被放大;第二个是默认的标准框,也就是屏幕的大小。您 return 首选(“标准”)框架。

如果 window 的框架已经等于您 return 的标准框架,那么 window 将取消缩放到用户的首选大小(正如他们通过手动调整大小表示的那样)它)。否则,window 将缩放到标准帧。

由此推论,如果标准帧在两次缩放之间发生变化,window 将在第一次缩放时再次缩放(到新的标准帧)。如果内容的大小在缩放之间发生变化,这是您可能期望的行为。