5

我有一个空的主 NSWindow 和 5 个 NSView。NSViews 有不同的按钮和标签等,窗口是空的。显示的第一个视图是一个菜单,链接到其他视图并返回。这工作正常,视图切换良好。

但是,如果 NSWindow 是某个大小,并且 NSView 更大,那么它会溢出 NSWindow 并被切断。

有什么办法可以让我这样做:

[_window setContentView: theNewView];

还要_window调整大小以适应新视图?如果这是可能的,这可以用动画来完成吗?

4

1 回答 1

18

-[NSWindow setContentSize:]这样做(没有动画)。给它所需的内容视图大小,它将适当地调整内容视图和窗口的大小,例如

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

对于动画,您需要手动计算窗口大小frameRectForContentRect:,然后使用以下命令更改窗口的框架animate:YES

[_window setContentView:theNewView];
NSRect viewScreenFrame = /*translate theNewView.frame to screen coordinates*/;
NSRect wndFrame = [_window frameRectForContentRect:viewScreenFrame];
[_window setFrame:wndFrame display:YES animate:YES];
于 2012-04-16T17:05:44.300 回答