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

有什么方法可以指定一个数十亿像素的虚拟documentView宽度,而只是渲染到clipView大小的实际documentView?使用大型documentView似乎可以正常工作,但这似乎不是正确的选择。

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

最佳答案

如果使用标准文档视图(NSClipView),则将渲染的唯一像素是分配给它的滚动视图的contentSize内的像素。因此,如果将scrollview的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;

关于cocoa - 可以为NSScrollView使用非常大的documentView吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6035628/

10-09 00:10