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