2

我正在努力弄清楚为什么我的视图没有在拖动时调整我的 NSWindow 的大小。

好的,这是我的结构:

  • 子类化 NSWindowController 的视图(使用自动布局检查窗口。自动调整大小检查视图。窗口的视图没有连接到 IB 中的任何东西,应该是吗?)
    • 各种按钮
    • 自定义视图 (选中自动调整子视图大小)
      • 子类化 NSViewController 的视图(Auto Resizes Subviews & Translates Mask 检查)
        • 各种子视图(选中自动调整子视图大小)
      • 子类化 NSViewController 的视图(Auto Resizes Subviews & Translates Mask 检查)
        • 各种子视图(选中自动调整子视图大小)

我将这些视图中的每一个添加到我的 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

Try to do this without Auto Layout.

Try this:

  • Uncheck Use Auto Layout for window.

  • Go to Size inspector and make autosizing to Your Views like this:

    autosizing

于 2012-04-21T05:55:16.707 回答