Как ускорить рендеринг ячейки UICollectionView в tvOS - PullRequest
0 голосов
/ 21 января 2019

Я разработал приложение tvOS, которое отображает CollectionView внутри CollectionView.Каждая секция первого CollectionView имеет только 1 элемент, назовем его RowCell, а этот элемент содержит второй CollectionView, в котором есть много ячеек данной категории.

У меня есть проблема: когда я использую .reloadData() в методе prepareForReuse в RowCell (строка, содержащая ячейки, разделенные по категориям), он загружается очень медленно, когда я прокручиваю вверх и вниз.И если я не использую .reloadData() для RowCell, данные всегда отображаются неправильно.

Есть мысли о том, как использовать .reloadData() и не уменьшать скорость прокрутки / рендеринга.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Были две простые проблемы с этим. Во-первых, каждая ячейка загружала тяжелые изображения из Интернета, поэтому я запрашиваю альтернативы более низкого качества в API, а во-вторых, эти изображения не сохранялись в Cache, поэтому мне приходилось делать это каждый раз при каждой прокрутке пользователя. Благодаря реализации обоих этих решений все проблемы исчезли.

0 голосов
/ 21 января 2019

Кажется, что если у вас много категорий, вы делаете много reloadData().Это ухудшается, если ячейки внутреннего сборного представления требуют рендеринга, несмотря на повторное использование ячеек.Чтобы смягчить это, вы можете взглянуть на Предварительная выборка данных представления сбора , где вы можете предварительно выбрать требуемые данные и асинхронно выполнять тяжелую работу для ячеек перед их фактическим отображением.

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

Надеюсь, это поможет!

...