0

我无法调整 NSWindow 的大小以适应 NSView。它必须是一个逻辑错误,因为它有效但不是一个动作。

我有一个空的 NSWindow,以及 3 个带有组件且大小不同的 NSView。

使用以下代码调整 NSWindow 的大小以适合 NSView 并显示它:

[_window setContentSize:_mainView.frame.size];
[_window setContentView:_mainView];

这段代码工作正常。

然而,在一个 NSView 中,我有一个后退按钮,虽然这会在 NSWindow 中显示正确的 NSView,但它不会重新调整它的大小。例如,初始窗口是一定大小,我单击切换到另一个视图并正确调整大小,我按下后退按钮,显示 NSView 但窗口保持相同大小?

谁能向我解释为什么当我切换回原来的 NSView 时,它不会调整 NSWindow 的大小?

提前谢谢大家。这是我拥有的完整代码:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [_window setContentSize:_mainView.frame.size];
    [_window setContentView:_mainView];
}

- (IBAction)switchSubtractionView:(id)sender {
    [_window setContentSize:_subtractionView.frame.size];
    [_window setContentView:_subtractionView];
}

- (IBAction)switchAdditionView:(id)sender {
    [_window setContentSize:_additionView.frame.size];
    [_window setContentView:_additionView];
}

// -----------------------------------------------------------------------
// THE FOLLOWING METHOD DISPLAYS THE NEW VIEW CORRECTLY BUT DOESN'T RESIZE
// -----------------------------------------------------------------------
- (IBAction)switchMainMenu:(id)sender {
    [_window setContentSize:_mainView.frame.size];
    [_window setContentView:_mainView];
}

提前谢谢大家。

编辑:在我看来,当获取 VIEW.frame.size 时,如果重复使用它,它会失去它的价值吗?这对我来说似乎很奇怪?

4

1 回答 1

3

窗口的内容视图必须始终调整大小以填充窗口的内容区域。因此,当您设置窗口的内容大小时,您实际上改变了当前内容视图的大小。这发生在您切换内容视图之前,因此您正在更改旧视图的大小。

在更改内容大小之前尝试将内容视图设置为新的一次性 NSView,然后设置新的内容视图。

于 2012-04-17T12:03:49.140 回答