Как изменить размер столбца NSOutlineView, когда скроллер появляется / исчезает? - PullRequest
2 голосов
/ 28 февраля 2010

Это должно быть очень просто, но после часа или около того я не могу понять, как это сделать правильно:

У меня есть представление NSOutline с двумя столбцами, правый из которых всегда должен быть полностью видимым. Вмещающий NSScrollView настроен так, чтобы показывать только вертикальный скроллер. Теперь, когда появляется вертикальный скроллер, он покрывает часть правого столбца. Однако я хотел бы добиться того, чтобы правая колонка двигалась влево, чтобы она все еще была полностью видна.

Сначала я некоторое время пытался поиграться с параметрами изменения размера в IB, но, похоже, это не сработало.

Затем я создал пользовательский NSOutlineView с

-(void)viewWillDraw {
 CGRect contentFrame = [[[self enclosingScrollView] contentView] frame];
 CGRect ourFrame = self.frame;

 CGFloat correction = ourFrame.size.width - contentFrame.size.width;

 //resize the first column when the scrollbar appears 
 [[self outlineTableColumn] setWidth:kOutlineColumnWidth - correction];

 [super viewWillDraw];
}

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

...