gpt4 book ai didi

objective-c - NSWindow 无法调整大小以适应 NSView - 有时?

转载 作者:行者123 更新时间:2023-12-03 17:35:38 26 4
gpt4 key购买 nike

我在调整 NSWindow 大小以适应 NSView 时遇到问题。它一定是一个逻辑错误,因为它有效,但不适用于某个操作。

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

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

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

这段代码工作正常。

但是,在一个 NSView 中,我有一个后退按钮,虽然这会在 NSWindow 中显示正确的 NSView,但它不会重新调整其大小。举个例子,初始窗口是一定大小的,我单击切换到另一个 View ,它正确调整大小,我按后退按钮,显示 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 时,如果重复使用它,它会丢失其值吗?这对我来说似乎很奇怪?

最佳答案

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

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

关于objective-c - NSWindow 无法调整大小以适应 NSView - 有时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10181851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com