调整NSWindow的大小以适应儿童NSView

Cri*_*ian 3 cocoa objective-c nswindow

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

然而,如果NSWindow是一定的大小,并且NSView更大,那么它会从NSWindow溢出并被切断.

有什么办法,当我这样做时:

[_window setContentView: theNewView];
Run Code Online (Sandbox Code Playgroud)

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

ham*_*ene 15

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

[_window setContentSize:theNewView.frame.size];
[_window setContentView:theNewView];
Run Code Online (Sandbox Code Playgroud)

对于动画,您需要手动计算窗口大小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];
Run Code Online (Sandbox Code Playgroud)