NSCollectionView - как сделать так, чтобы он прокручивался более плавно? - PullRequest
1 голос
/ 23 мая 2019

У меня есть NSCollectionView в NSCollectionViewGridLayout с возможно сотнями предметов в нем.

Это приводит к неприятному эффекту, что прокрутка вида выглядит нервной (резкой). И это на самом быстром Mac, доступном в настоящее время (Geekbench более 6500 баллов).

Когда я пытаюсь сделать то же самое в Finder с его представлением значков и аналогичным количеством элементов одинакового размера, он прокручивается гораздо меньше.

Как сделать прокрутку более плавной?

Я уменьшил установочный код в collectionView:itemForRepresentedObjectAtIndexPath: до минимума (т.е. я просто возвращаю результат из makeItemWithIdentifier:), но он все еще не прокручивается так же плавно, как Finder.

Представление NSCollectionViewItem загружается из nib-файла и содержит NSImageView и два NSTextView s, что также очень похоже на представление Icon в Finder.

Я полагаю, что отчасти проблема в том, что при прокрутке каркас хочет перезагрузить весь вид, прежде чем он снова посмотрит на движение перетаскивания ручки полосы прокрутки. Таким образом, в то время как пользователь удерживает и перемещает ручку полосы прокрутки, представление готовит каждый элемент последней позиции полосы прокрутки, даже если пользователь, возможно, уже переместил ручку полосы прокрутки дальше до точки, где ни один из готовящихся сейчас элементов больше не видны .

Итак, мне интересно, есть ли способ обнаружить, что полоса прокрутки уже идет дальше, чтобы я мог как-то прервать создание элементов, которые не будут видны, чтобы ручка полосы прокрутки могла двигаться быстрее?

...