2012-04-16 56 views
3

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

但是,如果NSWindow有一定的大小,并且NSView比较大,那么它会溢出NSWindow并被切断。

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

[_window setContentView: theNewView]; 

也有_window调整大小以适应新的看法?如果这是可能的,这可以用动画来完成吗?

回答

14

-[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]; 
+0

出色的作品。我到处找,并没有发现什么,但答案很简单。谢谢! – Cristian 2012-04-16 19:34:04

+0

有没有机会让我知道我是如何将视图转换为坐标的? – Cristian 2012-04-16 19:40:37

+1

我想出来 - http://www.cocoabuilder.com/archive/cocoa/162049-flipping-over-coordinate-conversion.html再次感谢! – Cristian 2012-04-16 19:53:30