cocoa - NSScrollView 可以有一个非常大的 documentView 吗?

标签 cocoa size document nsscrollview

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

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

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

最佳答案

如果您使用标准文档 View (NSClipView),则唯一渲染的像素是分配给它的 ScrollView 的 contentSize 内的像素。因此,如果将 ScrollView 的 contentSize 设置得相当小,那么无论 documentView 的边界有多大,它都应该显示良好。

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

为了避免混淆:

// 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/

相关文章:

c++ - 使 QGraphicsView 大小适合

ruby - 在 Ruby 中合并 Word 文档

jquery - window.onload 与 document.ready jQuery

cocoa - NSWindow 打开时如何收到通知?

iphone - 在 MVC 中,您在哪里放置对模型类的引用?

swift - 如何使嵌入式 View Controller 成为响应者链的一部分?

objective-c - 很多只读属性,什么时候初始化它们?

size - 32x32px .ico 文件的最大可能大小是多少?

java - 如何检查条件语句的 HashMap 的大小

javascript - 检查浏览器是否支持 JavaScript 中的 document.querySelectorAll