2

这应该是非常基本的,但是在尝试了一个小时左右之后,我无法弄清楚如何正确地做到这一点:

我有一个包含两列的 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];
}

问题是,当滚动条消失并且列由于某种非常难看的原因而增长和收缩几次时,该函数会被调用多次。此外,当窗口失去焦点时,左列会恢复到正常大小,导致右列再次被滚动条覆盖。

4

0 回答 0