5

空のメインNSWindowが1つと、NSViewが5つあります。NSViewにはさまざまなボタンやラベルなどがあり、ウィンドウは空です。最初に表示されるビューはメニューで、他のビューにリンクして戻ってきます。これは正常に機能し、ビューが適切に切り替わります。

ただし、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 に答える