ウィンドウにビューを追加して、ウィンドウフレーム内に収まるようにビューのサイズを変更するにはどうすればよいですか?
問題
2つのビューを含むシートウィンドウを作成していますが、一度に1つしか表示されないため、ビューのサイズがウィンドウと同じであることが重要です。私の問題は、view0が正しく適合し、view1が適合しないか、またはその逆であるということです。窓と同じ大きさにする方法がわかりません。
考えられる解決策
両方のビューがInterfaceBuilder内で正確に同じサイズであることを確認できれば、機能します。しかし、私はこれをプログラムで行う方法を探しています。
view0のスクリーンショット
以下に、ビューが何らかの形でクリップされている上部と右側の自動サイズ変更の問題を示します。
(ソース:flickr.com)
view1のスクリーンショット
このビューは正しくサイズ変更されます。
(ソース:flickr.com)
これが私のコードです
ビューをウィンドウに追加する前に、ビューのサイズを変更できますか。または、ウィンドウフレームを変更しながら、ビューを1つずつ追加するのと同じように行う方がよいでしょう。どうしますか?
NSView* view0 = /* a view made with IB */;
NSView* view1 = /* another view made with IB */;
NSWindow* window = [self window];
NSRect window_frame = [window frame];
NSView* cv = [[[NSView alloc] initWithFrame:window_frame] autorelease];
[window setContentView:cv];
[cv setAutoresizesSubviews:YES];
// add subview so it fits within the contentview frame
{
NSView* v = view0;
[v setHidden:YES];
[v setAutoresizesSubviews:NO];
[cv addSubview:v];
[v setFrameOrigin:NSZeroPoint];
[window setFrame:[v frame] display:NO];
[v setAutoresizesSubviews:YES];
}
// add subview so it fits within the contentview frame
{
NSView* v = view1;
[v setHidden:YES];
[v setAutoresizesSubviews:NO];
[cv addSubview:v];
[v setFrameOrigin:NSZeroPoint];
[window setFrame:[v frame] display:NO];
[v setAutoresizesSubviews:YES];
}
// restore original window frame
[window setFrame:window_frame display:YES];
[view0 setHidden:NO];
[view1 setHidden:YES];