绘制一个跟踪最后一行的NSOutlineView背景

时间:2018-11-22 17:23:17

标签: cocoa nstableview nsoutlineview

我正在构建一个大纲器,用户可以在其中做笔记。 NSOutlineView位于NSScrollView中,它是窗口的整个高度。我想在NSOutlineView后面有一个普通的背景,它精确地在大纲显示器的底行下方跟踪一些边距。

scrollView在其滚动行为的结尾具有弹性。展开/折叠时,NSOutlineView会设置动画。用户可以添加新行,并且键入一行可以增加行高。这使行的运动有很多变化。

目前,我能够捕捉到最后一行位置的一些变化。我在NSOutlineView上覆盖并捕获layout(),并在scrollView contentView上捕获boundsChangedNotifications。

问题在于,layout()仅在动画序列的开始和结束时在outlineView上调用。如果我为背景设置动画,它几乎会跟踪相同的运动,但是动画会中断对任何滚动视图运动的跟踪。

我真的需要捕获每个帧的更新(如渲染中一样)并设置背景高度。我怎样才能做到这一点?我想念的还有更简单的方法吗?

我不想为此在大纲视图中添加假行,因为这会使其他功能(例如拖放)变得非常复杂。

我没有使用Interface Builder。

0 个答案:

没有答案