3

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

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

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

4

1 回答 1

3

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

如果您担心的是将大量数据加载到内存中,请考虑将数据分解成碎片。每一块都应该比滚动视图的 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;
于 2011-06-09T18:28:00.743 回答