Изменение размера NSWindow для соответствия новым NSView приводит к некорректному отображению представлений

У меня есть 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. Со временем они фактически отдаляются все дальше и дальше, пока в конечном итоге не останется пустой вид.

12
задан doomspork 8 June 2011 в 20:44
поделиться