当调整窗口大小时,为什么我的NSWindow中的NSView不会调整大小?

时间:2012-04-18 12:14:04

标签: objective-c macos nswindow nsviewcontroller autoresizingmask

我正在拉扯我的头发试图弄清楚为什么我的观点没有随着我的NSWindow一直在调整大小。

好的,这是我的结构:

  • Subclassed NSWindowController的视图 (使用自动布局检查窗口。自动调整大小以查看视图。窗口的视图未连接到IB中的任何内容,是否应该?)
    • 各种按钮
    • 自定义视图(自动调整子视图已选中)
      • Subclassed NSViewController的视图(自动调整子视图和翻译蒙版已选中)
        • 各种子视图(自动调整子视图已选中)
      • Subclassed 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];

我错过了什么?

1 个答案:

答案 0 :(得分:0)

尝试在没有自动布局的情况下执行此操作。

试试这个:

  • 取消选中使用自动布局作为窗口。

  • 转到尺寸检查器并按照以下步骤自动调整到您的视图:

    autosizing