У меня есть NSWindowController с методом setCurrentView, в котором я использую следующий код, чтобы изменить размер окна на новый размер.
[self resizeWindowForContentSize: [newView frame].size];
NSView *contentView = [[self window] contentView];
NSDictionary *ani = [NSDictionary dictionaryWithObject:transition
forKey:@"subviews"];
[contentView setAnimations:ani];
[[contentView animator] replaceSubview:currentView with:newView];
Изменить: добавлен resizeWindowForContentSize, который я нашел на CocoaDev.
- (void)resizeWindowForContentSize:(NSSize) size {
NSRect windowFrame = [NSWindow contentRectForFrameRect:[[self window] frame]
styleMask:[[self window] styleMask]];
NSRect newWindowFrame = [NSWindow frameRectForContentRect:
NSMakeRect( NSMinX( windowFrame ), NSMaxY( windowFrame ) - size.height, size.width, size.height )
styleMask:[[self window] styleMask]];
[[self window] setFrame:newWindowFrame display:YES animate:[[self window] isVisible]];
}
Проблема, с которой я сталкиваюсь, заключается в том, что при переключении между представлениями (используя NSToolbar) представления начинают перемещаться в contentView. Со временем они на самом деле все больше и больше уходят, пока в конце концов не появится просто пустой вид.