我无法调整NSWindow的大小以适应NSView。它必须是一个逻辑错误,因为它可以工作但不能用于一个动作。
我有一个空的NSWindow,以及3个不同大小的NSView。
使用以下代码我调整NSWindow的大小以适应NSView并显示它:
[_window setContentSize:_mainView.frame.size];
[_window setContentView:_mainView];
此代码工作正常。
但是在一个NSView中我有一个Back按钮,虽然它在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时,如果重复使用它,它会丢失其值?这对我来说似乎很奇怪?答案 0 :(得分:3)
窗口的内容视图必须始终调整大小以填充窗口的内容区域。因此,在设置窗口的内容大小时,可以有效地更改当前内容视图的大小。这恰好在您切换内容视图之前发生,因此您要更改旧视图的大小。
尝试在更改内容大小之前将内容视图设置为新的一次性NSView,然后设置新的内容视图。