我在NSCollectionView
中有一个NSCollectionViewGridLayout
,其中可能包含数百个项目。
这导致令人不快的效果,即滚动视图看起来有些抽搐(生涩)。那是目前可用的最快的Mac(Geekbench得分超过6500)。
当我在Finder中尝试相同的操作时,它的图标视图以及相同大小的相似数量的物品,其滚动都不会那么抽搐。
如何使滚动更流畅?
我已将collectionView:itemForRepresentedObjectAtIndexPath:
中的设置代码减少到最低限度(即,我只是从makeItemWithIdentifier:
返回结果),但滚动效果仍然不如Finder平滑。
NSCollectionViewItem
的视图是从笔尖文件加载的,其中包含一个NSImageView
和两个NSTextView
,这也与Finder的“图标”视图非常相似。
我想部分问题是,当我滚动时,框架希望在重新考虑滚动条手柄的拖动运动之前重新加载整个视图。因此,当用户握住并移动滚动条的手柄时,即使用户可能已经将滚动条的手柄进一步移动到了一个没有准备的项目的位置,该视图也会准备最后一个滚动条位置的每个项目。在视图中不再可见。
所以,我想知道是否有一种方法可以检测到滚动条已经在走的更远,以便我可以以某种方式中止创建不可见的项目,从而使滚动条的手柄可以更快地移动?