这应该是非常基本的,但在尝试了一个小时之后,我无法弄清楚如何正确地做到这一点:
我有一个带有两列的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];
}
问题是,当滚动条消失时,函数会多次被调用,并且由于某种原因,该列会增长和缩小几次,这非常难看。此外,当窗口失去焦点时,左列会恢复正常大小,导致右列再次被卷轴覆盖。