2017-07-26 75 views
2

可怕的表现NSScrollView我试图画一个大的波形/图是NSView放置在NSScrollView里面。这样,用户可以一次水平滚动和滚动其中的一部分。NSScrollView与海量contentView导致滚动

波形视图可能非常大(技术上无限宽)。

如果绘制了整个波形,则滚动性能不可用。我不确定为什么NSScrollView试图重绘整个视图而不是仅仅是可见的矩形 - 但我怀疑我需要自己实现这个逻辑。

什么是最有效的方式来实现这个有很好的滚动体验?

+0

“NSScrollView”是否要求您绘制整个视图,或者在要求绘制脏部分时绘制整个视图?是创建图形的一个选项的图像? – Willeke

回答

1

你可以滚动视图的内容分成几个小NSView情况下,每一个代表你的图的一小部分,放在旁边彼此。

但是,我不确定在屏幕外剪切的视图仍会消耗资源并影响性能。

一个更好的apporach将类似于上面,但依靠收藏查看的内置功能。它的机器肯定只显示应该可见的单元格(不会被滚动视图剪切)。

+0

收集视图也横跨了我的想法 - 但不应该滚动视图具有相同的内置机制没有平铺?像scrollView:willShowRect:或类似的东西? –

+1

如果你的图是一个单一的整体NSView,它是一个全或无的东西:NSView本身不支持对部分遮挡显示的优化,除了'drawRect:'... –

+1

我不知道细节如何你的NSView的内容被创建,但是拆分成tile会使系统有更好的机会处理更小的数据。 –