iOS 13: кэш для UICollectionViewCompositionalLayout? - PullRequest
1 голос
/ 08 июня 2019

В совершенно новом и довольно аккуратном UICollectionViewCompositionalLayout - как можно кэшировать UICollectionViewLayoutAttributes при первоначальном создании?

Все известные методы и свойства кажутся встроенными, поскольку новый класс макета наследуется от UICollectionViewLayout.

Возвращаясь к «старому» подходу UICollectionViewLayout, путь для такой задачи, насколько мне известно, заключался в использовании метода prepare () для заполнения (n) массива (ов) заказным [UICollectionViewLayoutAttributes].

Насколько я понимаю, новый класс макетов создает макет секция за секцией, возвращая -> NSCollectionLayoutSection из того, что мы видели как метод createLayout() в докладе WWDC19 Достижения в макете представления коллекции . И, похоже, это делается только один раз при инициализации.

Теперь я подклассифицировал UICollectionViewCompositionalLayout, и класс возвращает layoutAttributesForElements, как и следовало ожидать:

override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
        let superAttributes = super.layoutAttributesForElements(in: rect)
        print("I am returning attributes: ", supersAttributes)
        return superAttributes
}

Но так как они не созданы вручную, где я могу сразу перехватить эти атрибуты, чтобы добавить их в массив кеша?

Причина этого пути в том, что я пытаюсь воссоздать очень, очень высокую коллекцию ViewLayout, которую мне нужно масштабировать. И это стало возможным (по крайней мере, в прошлом) с помощью кэша, изменения кэшированных атрибутов во время zoon и возврата layoutAttributesForElements(in: rect) из кэша на протяжении всего жизненного цикла. Техника, которую я видел у Рэя Вендерлиха и в других местах.

Любой вклад был бы великолепен! Давайте повеселимся, разбираясь в новом, более простом мире спорных коллекций Views!

Большое спасибо за чтение.

...