1

我有一个NSWindow并且已经实施windowWillResize

在这种方法中,我有一些代码可以调整窗口内容的大小。它工作得很好。

但是当用户想用绿色加号按钮(在标题栏中)最大化(缩放)窗口时,窗口正在增长但windowWillResize不会被调用。

我试图实现windowShouldZoom方法。调用了该方法,但此时我无法获取窗口大小。

谢谢你的帮助!

4

1 回答 1

0

像这样的通知windowWillResize:toSize:实际上更多地用于约束窗口,例如,对于可能希望在某些边界上对齐窗口的图像查看器。框架可以在根本不调用通知的情况下进行更改(setFrame:display:例如),因此依赖此类回调进行布局并不好。

考虑创建一个NSView子类作为要排列的视图的父类,然后resizeSubviewsWithOldSize:视图级别实现方法。这还有一个好处是您可以将布局逻辑包含在子树中:也许有一天您决定视图不一定需要使用整个窗口(例如,用户控制的侧边栏的显示/隐藏),并且这种方式“主”窗口区域可以神奇地使用分配给它的任何空间来进行布局。

注意使用NSView作为resize的依据并不意味着窗口状态不可用;例如,视图可以检测窗口是否已开始或结束“实时调整大小”并相应地优化布局。

于 2012-06-29T02:39:34.123 回答