Добавление подпредставлений в NSWindow при изменении размера окон, пользовательский интерфейс путается

У меня есть окно и добавлено подпредставление, это подпредставление является контейнером другого представления (доступ и добавление с использованием NSViewController). Я отключил авторазметку и делаю изменение размера из пружин. Подвиды правильно изменяют размер при изменении размера окна.

Если я добавляю/удаляю подвиды, сохраняя размер окна, он работает нормально. Но если я добавлю подвид и разверну его, а затем удалю, а затем добавлю, он перемешается.

Некоторое время это происходит прямо как:

Откройте главное окно (оно открывается в маленьком размере). Разверните его, затем добавьте подпредставление, подпредставление будет добавлено к исходному размеру, как показано в xib. Ожидаемое поведение: подпредставление должно расширяться и закрывать главное окно.

Я не могу найти решение. Пожалуйста, помогите мне исправить это. Пример кода и пример проекта прикреплены здесь.

//In AppDelegate

- (IBAction)buttonClicked:(id)sender {
    if (!self.myVC) {
        self.myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    }
    [self.containerView addSubview:self.myVC.view];
}

- (IBAction)clearClicked:(id)sender {

    for (NSView *view in self.containerView.subviews) {
        [view removeFromSuperview];
    }

}

person Anoop Vaidya    schedule 19.09.2014    source источник


Ответы (1)


Я получил ответ,

Прежде чем добавить представление в представление контейнера, я получаю прямоугольник контейнера и устанавливаю фрейм для дочернего представления.

- (IBAction)buttonClicked:(id)sender {
    if (!self.myVC) {
        self.myVC = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    }

    NSRect rect = NSMakeRect(0, 0, self.containerView.frame.size.width, self.containerView.frame.size.height);
    [self.myVC.view setFrame:rect];

    [self.containerView addSubview:self.myVC.view];
}
person Anoop Vaidya    schedule 19.09.2014