2

ドラッグ時にNSWindowでビューのサイズが変更されない理由を理解しようと、髪の毛を抜いています。

さて、これが私の構造です:

  • サブクラス化されたNSWindowControllerのビュー(ウィンドウに対してチェックされた自動レイアウトを使用します。ビューに対してチェックされた自動サイズ変更。ウィンドウのビューはIB内の何にも接続されていませんか?)
    • さまざまなボタン
    • カスタムビュー (サブビューの自動サイズ変更がチェックされています)
      • サブクラス化された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];

私は何が欠けていますか?

4

1 に答える 1

1

自動レイアウトなしでこれを実行してみてください。

これを試して:

  • [ウィンドウに自動レイアウトを使用する]のチェックを外します。

  • サイズインスペクターに移動し、次のようにビューの自動サイズ変更を行います。

    自動サイズ設定

于 2012-04-21T05:55:16.707 に答える