Я рву на себе волосы, пытаясь понять, почему мои представления не изменяются в размерах, когда мой NSWindow перетаскивается.
Хорошо, вот моя структура:
- Subclassed NSWindowController's View (Use Auto Layout Checked for window. Auto Resize checked for view. Window's View not hooked up to anything in IB, should it be?)
- Various Buttons
- Custom View (Auto Resizes Subviews checked)
- Subclassed NSViewController's View (Auto Resizes Subviews & Translates Mask checked)
- Various Subviews (Auto Resizes Subviews checked)
- Subclassed NSViewController's View (Auto Resizes Subviews & Translates Mask checked)
- Various Subviews (Auto Resizes Subviews checked)
- Subclassed NSViewController's View (Auto Resizes Subviews & Translates Mask checked)
Я добавляю каждое из этих представлений в собственное представление моего 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];
Что мне не хватает?