滚动条出现/消失时如何调整NSOutlineView列的大小?

时间:2010-02-28 20:55:56

标签: cocoa resize nsoutlineview nsscrollview

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

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

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

0 个答案:

没有答案