Динамическая ячейка collectionView, вызывающая проблему видимости - iOS - PullRequest
1 голос
/ 26 марта 2019

У меня есть 3 столбца и несколько строк представления коллекции. В моем sizeForItemAtIndexPath я возвращаю динамический CGSize, например:

return CGSizeMake(_sponsoredCollectionView.frame.size.width/3 - 7, (_sponsoredCollectionView.frame.size.width/3 - 7 + nameHeight + cuisineHeight + addressHeight + timingHeight + paddings));

Но с указанным выше размером моя последняя ячейка не отображается (я не понимаю почему, поскольку возвращаемая высота аналогична предыдущей ячейке, и для ее отображения достаточно места, так как предыдущие ячейки сделали), см. скриншот ниже: enter image description here

И когда я жестко закодирую размер следующим образом:

return CGSizeMake(_sponsoredCollectionView.frame.size.width/3 - 7,250);

Это показано (ячейка с названием KEKOU, но очевидно с большим количеством пустых мест сверху и снизу из-за высоты жесткого кода 250, см. Скриншот ниже: enter image description here

Кроме того, я делаю следующее, чтобы CollectionView изменял размер в соответствии с ячейками после переопределения

[_sponsoredCollectionView reloadData];

dispatch_async(dispatch_get_main_queue(), ^{
  _sponsoredCollectionViewHeightConstraint.constant = _sponsoredCollectionView.collectionViewLayout.collectionViewContentSize.height + 0;
});

Я не могу понять, в чем проблема: S Пожалуйста, помогите!

1 Ответ

1 голос
/ 27 марта 2019

Наконец, после целой ночи проб и ошибок и исследований, я решил ее, просто изменив _sponsoredCollectionViewHeightConstraint.constant внутри performBatchUpdates следующим образом:

[_sponsoredCollectionView reloadData];

dispatch_async(dispatch_get_main_queue(), ^{
                        [self.sponsoredCollectionView performBatchUpdates:^{
                            _sponsoredCollectionViewHeightConstraint.constant = _sponsoredCollectionView.collectionViewLayout.collectionViewContentSize.height + 5;//_sponsoredCollectionView.contentSize.height + 5;
                        } completion:nil];
                    });
...