Cocoa 无限文档的滚动条?

Cocoa 无限文档的滚动条?,cocoa,interface,macos,scroll,look-and-feel,Cocoa,Interface,Macos,Scroll,Look And Feel,有没有标准的Aqua方法来处理几乎无限的文档 例如,想象一个基于平铺的游戏的关卡编辑器。该级别没有预设大小(尽管它在技术上受到NSInteger大小的限制);瓷砖可以放置在网格上的任何位置。有没有一个标准的界面可以滚动浏览这样的文档 我不能简单地将滚动限制在已经有分幅的区域,因为用户需要能够在该边界之外添加分幅。任意创建级别大小,即使用户可以轻松更改,也似乎不理想 有人见过处理此问题的应用程序吗?一个选项是在用户滚动时基本上动态地扩展该区域-当用户在边缘的X个单位内滚动时,在该方向上添加另一个单

有没有标准的Aqua方法来处理几乎无限的文档

例如,想象一个基于平铺的游戏的关卡编辑器。该级别没有预设大小(尽管它在技术上受到
NSInteger
大小的限制);瓷砖可以放置在网格上的任何位置。有没有一个标准的界面可以滚动浏览这样的文档

我不能简单地将滚动限制在已经有分幅的区域,因为用户需要能够在该边界之外添加分幅。任意创建级别大小,即使用户可以轻松更改,也似乎不理想


有人见过处理此问题的应用程序吗?

一个选项是在用户滚动时基本上动态地扩展该区域-当用户在边缘的X个单位内滚动时,在该方向上添加另一个单位。基本上,您永远无法“一路”滚动到某个边缘,因为越近,它就会扩展得越远


如果用户从边缘向后滚动,则将其收缩到不超过X个单位,超出实际内容的位置。

您看到Microsoft Excel如何解决此问题了吗?它还必须用滚动条表示无限空间

一种解决方案是为原始级别大小定义一个合理的空间,当用户滚动到远离其边界的一个磁贴时,添加另一行或列磁贴,并相应地调整滚动条。这样,用户永远不会达到实际边界

如果用户决定减少级别大小,还可以添加代码,一旦未使用的行仅由空平铺组成,就可以缩小“合理空间”。这就避免了用户被一个巨大的水平,他们滚动通过,没有办法缩小它卡住


编辑:与Dav的答案相同。:)

我刚刚发现Inkscape使用这个解决方案,如果有人想在一个免费应用程序中看到它的运行。