我有一个NSWindow
并且已经实施windowWillResize
。
在这种方法中,我有一些代码可以调整窗口内容的大小。它工作得很好。
但是当用户想用绿色加号按钮(在标题栏中)最大化(缩放)窗口时,窗口正在增长但windowWillResize
不会被调用。
我试图实现windowShouldZoom
方法。调用了该方法,但此时我无法获取窗口大小。
谢谢你的帮助!
像这样的通知windowWillResize:toSize:
实际上更多地用于约束窗口,例如,对于可能希望在某些边界上对齐窗口的图像查看器。框架可以在根本不调用通知的情况下进行更改(setFrame:display:
例如),因此依赖此类回调进行布局并不好。
考虑创建一个NSView
子类作为要排列的视图的父类,然后resizeSubviewsWithOldSize:
在视图级别实现方法。这还有一个好处是您可以将布局逻辑包含在子树中:也许有一天您决定视图不一定需要使用整个窗口(例如,用户控制的侧边栏的显示/隐藏),并且这种方式“主”窗口区域可以神奇地使用分配给它的任何空间来进行布局。
注意使用NSView
作为resize的依据并不意味着窗口状态不可用;例如,视图可以检测窗口是否已开始或结束“实时调整大小”并相应地优化布局。