Изменение размера NSView для размещения подпредставлений - PullRequest
0 голосов
/ 05 апреля 2011

У меня очень большие трудности с настройкой настроек PXListView и NSScrollView. Вот суть этого:

У меня есть страница панели инструментов, которая должна содержать 2 PXListViews. Один из них получает свои данные из Core Data, другой - из RSS-канала. Оба они добавляются в суперпредставление и связанный контроллер (у меня есть режимы, отличные от Dashboard, так что это был самый эффективный способ). Это суперпредставление становится documentView для моего NSScrollView.

Я могу заставить все это работать хорошо, за исключением просмотра списка на основе канала RSS. Я получаю фид асинхронно, чтобы он не поддерживал пользовательский интерфейс, и как только фид был получен и список заполнен, я автоматически изменяю его размер. Все это прекрасно работает, однако мне нужно изменить размер моего Dashboard View, чтобы прокрутить полосы прокрутки вверх. Поэтому я отправляю уведомление, которое приводит к методу autosizeView, который я создал, но все идет к черту.

Два ListViews начинают перекрываться, а содержимое верхнего заканчивается в нижнем. Снимок экрана ниже (красный - прямоугольник границ, синий - рамка каждого подпредставления)

Это перед вызовом autosizeView: enter image description here

Это после вызова: enter image description here

И, если быть точным, это выглядит так, если я изменяю размеры PXListViews и не вызываю метод автоматического изменения размера DashboardView: enter image description here

Как видите, он работает нормально, пока я не вызываю autosizeViews, но тогда я не получаю прокрутки. Вот мой метод autosizeView:

-(void)autosizeView
{
    //Resize the view to accommodate all subviews
    NSRect oldFrame = [[self view] frame];
    CGFloat lastY = [_activityView frame].origin.y;
    if (lastY < 0) {
        CGFloat newHeight = oldFrame.size.height + (-lastY);
        [[self view] setFrameSize:NSMakeSize(oldFrame.size.width, newHeight)];
    }
}

Полагаю, все это как-то связано с тем, что координаты меняются, когда я изменяю размер DashboardView, из-за чего происхождение его подпредставлений меняется.

Любая помощь будет принята с благодарностью !!!

1 Ответ

0 голосов
/ 06 апреля 2011

Ну, я решил это.Оказалось, что эта ошибка была вызвана автоматическим изменением высоты PXListView при изменении размера суперпредставленияБыстрое изменение использования setAutoresizeMask: было все, что было нужно.Это всегда что-то простое, эй?

...