是否可以为NSScrollView创建一个非常大的documentView?

时间:2011-05-17 18:48:17

标签: cocoa size document nsscrollview

我想在NSScrollView中显示非常长的数据集。

有没有办法指定虚拟documentView宽度为几十亿像素,但只是渲染到clipView大小的实际documentView?使用大型documentView似乎可行,但它似乎不是正确的做法。

我使用普通的ol'NSView,但我想免费获得鼠标/手势滚动功能。

1 个答案:

答案 0 :(得分:2)

如果使用标准文档视图(NSClipView),将呈现的唯一像素是它所分配的scrollview的contentSize内的像素。因此,如果将scrollview的contentSize设置得相当小,无论documentView的边界有多大,它都应该显示正常。

如果您担心的是将大量数据加载到内存中,请考虑将数据分成几部分。每个部分应该比scrollview的contentSize可以显示的大一些。监控滚动位置,以便当它接近当前显示的内容的边缘时,您准备加载下一个部分。

为了避免混淆:

// How to determine the size of the area that will be displayed:
NSSize sizeOfDisplay = [scrollView contentSize]; 
// How to determine the full size of the content you have loaded:
NSRect rectFullContent = [[scrollView documentView] bounds];
NSSize sizeFullContent = rectFullContent.size;