2012-04-16 55 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