ドラッグ時にNSWindowでビューのサイズが変更されない理由を理解しようと、髪の毛を抜いています。
さて、これが私の構造です:
- サブクラス化されたNSWindowControllerのビュー(ウィンドウに対してチェックされた自動レイアウトを使用します。ビューに対してチェックされた自動サイズ変更。ウィンドウのビューはIB内の何にも接続されていませんか?)
- さまざまなボタン
- カスタムビュー (サブビューの自動サイズ変更がチェックされています)
- サブクラス化されたNSViewControllerのビュー(サブビューの自動サイズ変更とマスクの変換がチェックされています)
- さまざまなサブビュー(サブビューの自動サイズ変更がチェックされています)
- サブクラス化されたNSViewControllerのビュー(サブビューの自動サイズ変更とマスクの変換がチェックされています)
- さまざまなサブビュー(サブビューの自動サイズ変更がチェックされています)
- サブクラス化されたNSViewControllerのビュー(サブビューの自動サイズ変更とマスクの変換がチェックされています)
これらの各ビューをNSWindowControllerのカスタムビューに追加しています。これは私のファイルで唯一の関連する方法です:
-(void)setActiveView:(NSString*) viewString{
if ([currentViewController view] != nil)
[[currentViewController view] removeFromSuperview];
if ([viewString isEqualToString:kFirstView]){
FirstViewController *viewController = [[FirstViewController alloc]initWithNibName:kFirstView bundle:nil];
if (viewController != nil){
currentViewController = viewController;
}
}
else if ([viewString isEqualToString:kSecondView]){
SecondViewController *viewController = [[SecondViewController alloc]initWithNibName:kSecondView bundle:nil];
if (viewController != nil){
currentViewController = viewController;
}
}
//Resize Controller to Window's size.
[[currentViewController view] setFrame:[myWindowView bounds]];
//Embed current view into Custom View in host view.
[myWindowView addSubview:[currentViewController view]];
}
サイズを変更するsetFrameは、ビューを変更した場合は機能しますが、ドラッグしてウィンドウのサイズを変更した場合は機能しません。私の知る限り、ビューを変更するとsetFrameが機能するため、実際に重要な(ただし機能していない)のは、NSWindowController内のカスタムビューだけです。
また、これは私がこのウィンドウを前面に出す方法です:
myController = [[MyWindowController alloc]initWithWindowNibName:@"MyWindow"];
[myController showWindow:nil];
はい、私はすでにinitwithframeで試しました:
[myWindowView setAutoresizesSubviews:YES];
[myWindowView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
私は何が欠けていますか?