我正在努力弄清楚为什么我的视图没有在拖动时调整我的 NSWindow 的大小。
好的,这是我的结构:
- 子类化 NSWindowController 的视图(使用自动布局检查窗口。自动调整大小检查视图。窗口的视图没有连接到 IB 中的任何东西,应该是吗?)
- 各种按钮
- 自定义视图 (选中自动调整子视图大小)
- 子类化 NSViewController 的视图(Auto Resizes Subviews & Translates Mask 检查)
- 各种子视图(选中自动调整子视图大小)
- 子类化 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];
我错过了什么?