2012-04-16 17 views
3

空のメインNSWindowが1つとNSViewが5つあります。 NSViewsには異なるボタンとラベルなどがあり、ウィンドウは空です。表示される最初のビューは、他のビューにリンクして戻るメニューです。これは正常に動作し、ビューはうまく切り替わります。子NSViewに合うNSWindowのサイズ変更

しかし、NSWindowが特定のサイズでNSViewが大きい場合、NSWindowからNSWindowが飛び出して途切れてしまいます。

[_window setContentView: theNewView]; 

も新しいビューに合わせて_windowリサイズを持っている:

は、そのような私が行うとき、その方法はありますか?これが可能なら、アニメーションでこれを行うことができますか?

答えて

14

-[NSWindow setContentSize:]これは(アニメーションなし)です。コンテンツビューの希望のサイズを指定すると、コンテンツビューとウィンドウの両方のサイズが適切に変更されます(例:

[_window setContentView:theNewView]; 
NSRect viewScreenFrame = /*translate theNewView.frame to screen coordinates*/; 
NSRect wndFrame = [_window frameRectForContentRect:viewScreenFrame]; 
[_window setFrame:wndFrame display:YES animate:YES]; 
+0

が見事に動作します:

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

は、アニメーションのために、手動でframeRectForContentRect:を使用してウィンドウのサイズを計算し、その後animate:YESでウィンドウの枠を変更する必要があります。私はどこにでも見て、何も見つからなかったのですが、答えはとてもシンプルです。ありがとう! – Cristian

+0

私はビューを座標に変換する方法を教えてもらえますか? – Cristian

+1

私はそれを考え出した - http://www.cocoabuilder.com/archive/cocoa/162049-flipping-over-coordinate-conversion.htmlもう一度ありがとう! – Cristian

関連する問題