在UI设计时,通常会使用到一些涉及到NSScrollView的控件或用户自定义的滚动视图;在某些情况下,我们需要使用代码来控制NSScrollView的滚动(而不是用户使用鼠标拖动或点击箭头来触发滚动操作);这时就需要明确NSScrollView的实现方式,并在此基础上通过视图移动来实现NSScrollView的滚动操作;
首先需要介绍NSScrollView的实现方式。NSScrollView自身是NSView的子类,它是一个组合控件;它的层次结构如下所示:
图中的NSScrollView中包含了一个content view , 这个content view 是NSClipView的一个实例对象,它是一个clip view。在clip view内部有一个document view, 这个document view是一个NSView类或者其派生类的实例对象; 这个document view 里面的内容才是NSScrollView中需要通过滚动浏览的内容;所谓滚动,实际可以把clip view看成一个大小固定的观景窗,我们需要通过这个观景窗去浏览document view。这样我们可以有以下结论,当document view的尺寸比clip view 的尺寸小的情况下,可以通过clip view 观察到document vi